私はUbuntu16.04を使用しており、現在、信号処理のためにMatlabの逆数としてOctaveを使用しています。中央値を取得するためにmedfilt1
関数を使用する必要があるまで、すべて問題ありませんでした。 Octaveは、シグナルパッケージがシステムにインストールされていないというエラーレポートを生成しました。少しブラウジングした後、私はコマンドを見つけました
Sudo apt-get install octave-signal
このコマンドを実行すると、すべてが完全にダウンロードおよびインストールされていることが示されました。ただし、オクターブスクリプトを再度実行すると、エラーが解決しません。
警告:「medfilt1」関数は、インストールしたがロードしていないOctaveForgeのシグナルパッケージに属しています。パッケージをロードするには、Octaveプロンプトから「pkgloadsignal」を実行します。
不足している機能に貢献する方法については、 http://www.octave.org/missing.html をお読みください。警告:unimplementedから呼び出されました。行524列5 filter-practice.m行8列2エラー: 'medfilt1' undefined near line 8 column 3 error :filter-practice.mの8行2列目から呼び出されます
エラーメッセージを分析してpkg load signal
を実行しようとしましたが、ターミナルからそのようなコマンドはないと言われました。
コマンドが見つかりません:pkg
シグナルパッケージをシステムにインストールするにはどうすればよいですか?
pkg
コマンドは実際にはオクターブの一部であり、シェル端末からではなく、オクターブ内から実行する必要があります。
この回答のクレジットはこの スレッド のメンバーに与えられますが、彼らは同様に拡張コメントで結論に達し、回答を投稿しなかったので、おそらくこれは他の何人かがこの罠に陥るのを見つけるでしょう:)
投稿にはすでに受け入れられた回答がありますが、関連するすべての詳細が欠落しているため(パッケージの作成方法のみに関心がある場合)、将来のユーザーのためにここで回答を提供しますapt-getを介してインストールすると、オクターブセッションに表示されます。最後のビットを参照してください)
Octaveforge にリストされているパッケージの1つをインストールするには(利用可能なパッケージの完全なリストについては ここ を参照)、特定のパッケージの.tar.gz
ファイルをからダウンロードできます。それぞれのページ(例:signal
パッケージの場合は here )、次にそのフォルダーに移動し、octaveターミナルで次のコマンドを発行します。
pkg install signal
あるいは、はるかに便利なことに、-forge
オプションを追加することで、Octaveforgeから直接パッケージをダウンロードしてインストールするようにoctaveに依頼できます。
pkg install signal -forge
パッケージをインストールする前に~/octave
コマンドを使用して、デフォルトの場所(通常はpkg prefix
)が気に入らない場合は、そのようなパッケージをインストールするためにwhereを指定することもできます(を参照)。詳細についてはドキュメント)。
パッケージがインストールされると、pkg list
コマンドを使用してインストールされたパッケージのリストを照会できます。 「ロードされた」パッケージは、PCなどでアスタリスクで示されます。
octave:1> pkg list
Package Name | Version | Installation directory
---------------------+---------+-----------------------
fuzzy-logic-toolkit | 0.4.5 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/fuzzy-logic-toolkit-0.4.5
image *| 2.6.1 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/image-2.6.1
io | 2.4.7 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/io-2.4.7
statistics | 1.3.0 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/statistics-1.3.0
loadパッケージにするには、pkg load
コマンドを使用します。 「依存関係」も自動的に読み込まれます。例:
octave:2> pkg load statistics
octave:3> pkg list
Package Name | Version | Installation directory
---------------------+---------+-----------------------
fuzzy-logic-toolkit | 0.4.5 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/fuzzy-logic-toolkit-0.4.5
image *| 2.6.1 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/image-2.6.1
io *| 2.4.7 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/io-2.4.7
statistics *| 1.3.0 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/statistics-1.3.0
上記の方法はすべて、localインストールと見なされます。 Octaveは、インストールされているパッケージのリストをoctave_packages
というファイルに保存します。通常、Octaveのインストールまたはホームフォルダーにあります。 代わりにリポジトリからパッケージをグローバルにインストールした場合適切なoctave_packages
ファイルにリンクしてオクターブに通知する必要があります、通常は/usr/share/octave/octave_packages
、pkg global_list
コマンドを使用します。
たとえば、上記の直接オプションでエラーが発生したため、リポジトリからodepkg
をインストールする必要がありました。利用可能なパッケージのリストにオクターブで表示するには、そのようなグローバルにインストールされたpkgの存在を指定する必要があります。
octave:4> pkg global_list /usr/share/octave/octave_packages
octave:5> pkg list
Package Name | Version | Installation directory
---------------------+---------+-----------------------
fuzzy-logic-toolkit | 0.4.5 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/fuzzy-logic-toolkit-0.4.5
image *| 2.6.1 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/image-2.6.1
io *| 2.4.7 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/io-2.4.7
odepkg | 0.8.5 | /usr/share/octave/packages/odepkg-0.8.5
statistics *| 1.3.0 | /media/tasos/Gandalf/opt/octave-4.2.1/lib/statistics-1.3.0
ただし、一般的には、このようなパッケージをインストールする方がおそらく便利ですローカルリポジトリ内のパッケージバージョンは古くなっていることが多いため(そして毎回pkg global_list
を実行する必要があるのは面倒);オクターブ内のローカルインストールが何らかの理由(コンパイルエラーの発生など)で機能しない場合にのみ、Linuxターミナルからグローバルパッケージをインストールします。
オクターブ端子でhelp pkg
を実行して、詳細についてはpkg
コマンドのドキュメントを参照してください。