web-dev-qa-db-ja.com

オクターブ信号パッケージのインストール

私は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コマンドは実際にはオクターブの一部であり、シェル端末からではなく、オクターブ内から実行する必要があります。


この回答のクレジットはこの スレッド のメンバーに与えられますが、彼らは同様に拡張コメントで結論に達し、回答を投稿しなかったので、おそらくこれは他の何人かがこの罠に陥るのを見つけるでしょう:)

4
user2027202827

投稿にはすでに受け入れられた回答がありますが、関連するすべての詳細が欠落しているため(パッケージの作成方法のみに関心がある場合)、将来のユーザーのためにここで回答を提供します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_packagespkg 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コマンドのドキュメントを参照してください。

9