「Octave」の版間の差分
Kusakata.bot (トーク | 投稿記録) (update Pkg/AUR templates) |
(参照を翻訳して追加) |
||
(4人の利用者による、間の11版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:プログラミング言語]] |
+ | [[Category:数値解析]] |
||
+ | [[Category:GNU]] |
||
[[en:Octave]] |
[[en:Octave]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
7行目: | 9行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
− | [ |
+ | [https://www.gnu.org/software/octave/ 公式ウェブサイト] より: |
:''GNU Octave は主に数値解析を目的とした高水準インタプリタ言語です。線形ならびに非線形問題を数値的に解いたり、他の数値実験を行うことができます。データを可視化したり操作するためのグラフィック機能も備えています。通常、Octave は対話式のコマンドラインインターフェイスから使われますが、非対話式のプログラムを書くのにも使うことができます。Octave 言語は Matlab とよく似ているためプログラムを簡単に移植可能です。'' |
:''GNU Octave は主に数値解析を目的とした高水準インタプリタ言語です。線形ならびに非線形問題を数値的に解いたり、他の数値実験を行うことができます。データを可視化したり操作するためのグラフィック機能も備えています。通常、Octave は対話式のコマンドラインインターフェイスから使われますが、非対話式のプログラムを書くのにも使うことができます。Octave 言語は Matlab とよく似ているためプログラムを簡単に移植可能です。'' |
||
== インストール == |
== インストール == |
||
− | + | {{Pkg|octave}} パッケージを[[インストール]]してください。 |
|
− | + | GUI インターフェイスは {{ic|octave --gui}} で起動し、コマンドラインインターフェイスは {{ic|octave-cli}} で起動します。 |
|
+ | |||
+ | === 他のGUI インターフェイス === |
||
+ | |||
+ | 標準の GUI インターフェイスは {{pkg|octave}} パッケージに含まれています。それ以外の非公式 GUI フロントエンドも利用できます: |
||
+ | |||
+ | * {{App|Cantor|数学的演算をいくつかのバックエンド (Scilab、Maxima、Octave など) の 1 つに委任するグラフィカルユーザーインターフェイス。|https://edu.kde.org/cantor/|{{Pkg|cantor}}}} |
||
+ | * {{App|[[Jupyter|JupyterLab]]|Octave を含む多くのプログラミングバックエンドをサポートするブラウザベースの対話型環境。|https://jupyterlab.readthedocs.io/en/stable/|{{Pkg|jupyterlab}}+{{AUR|jupyter-octave_kernel}}}} |
||
+ | |||
+ | === パフォーマンス === |
||
+ | |||
+ | Octave は、デフォルトで線形代数計算に {{Pkg|blas}} パッケージを使用します。ただし、この実装では最新の CPU 命令を利用していません。パフォーマンスを高速化するために、{{Pkg|openblas}} パッケージを blas のドロップイン置換としてインストールできます。Intel CPU の場合は {{Pkg|intel-oneapi-mkl}}、NVIDIA GPU の場合は {{Pkg|cuda}} など、利用可能なハードウェアに応じて他の BLAS 実装も使用できます。 |
||
+ | |||
+ | この点を説明するために、次のコードを使用して、NxN 行列の乗算で実行される GFLOPS の推定値を取得できます: |
||
+ | |||
+ | N = 4096; |
||
+ | A = single(rand(N, N)); |
||
+ | B = single(rand(N, N)); |
||
+ | start = clock(); |
||
+ | C = A * B; |
||
+ | elapsedTime = etime(clock(), start); |
||
+ | gFlops = 2 * N * N * N / (elapsedTime * 1e9) |
||
+ | |||
+ | Intel Core i7-9750H で次のコードを実行します。 |
||
+ | |||
+ | {{hc|1=octave ~/test_program.m|2=gFlops = 3.7222}} |
||
+ | |||
+ | openblas をインストールし、単一スレッドでプログラムを実行した後: |
||
+ | |||
+ | {{hc|1=OMP_NUM_THREADS=1 octave ~/test_program.m|2=gFlops = 121.55}} |
||
+ | |||
+ | openblas に 9750H で利用可能な 12 スレッドをすべて使用させた後: |
||
+ | |||
+ | {{hc|1=OMP_NUM_THREADS=12 octave ~/test_program.m|2=gFlops = 281.33}} |
||
== Octave-Forge == |
== Octave-Forge == |
||
59行目: | 94行目: | ||
== プロット == |
== プロット == |
||
− | + | Qt がデフォルトのプロットバックエンドです: |
|
+ | >> available_graphics_toolkits |
||
− | * {{App|[[Wikipedia:ja:Gnuplot|Gnuplot]]|古典的な Linux プロットユーティリティ。|http://www.gnuplot.info/|{{Pkg|gnuplot}}}} |
||
+ | ans = |
||
− | * {{App|FLTK Backend|[[Wikipedia:ja:FLTK|FLTK]] GUI ツールキットを使用する新しい実験的な OpenGL バックエンド。|http://www.gnu.org/software/octave/|{{Pkg|octave}}}} |
||
+ | { |
||
− | {{Note|FLTK バックエンドを使用するには、{{Pkg|fltk}} パッケージをインストールする必要があります。現在このパッケージは octave の依存パッケージとしてインストールされます。}} |
||
+ | [1,1] = fltk |
||
+ | [1,2] = qt |
||
+ | } |
||
+ | >> graphics_toolkit |
||
+ | ans = qt |
||
+ | あるいは、FLTK または {{Pkg|gnuplot}} をバックエンドに使うこともできます: |
||
− | 今日 FLTK がデフォルトのプロットユーティリティですが、実験的なインターフェイスに深刻な問題があるため、gnuplot を使うようにすることもできます: |
||
− | + | >> graphics_toolkit("gnuplot"); |
|
上記の変更を永続化させるには {{ic|~/.octaverc}} ファイルに追加してください。 |
上記の変更を永続化させるには {{ic|~/.octaverc}} ファイルに追加してください。 |
||
+ | == Microsoft Excel スプレッドシートを読み込む == |
||
− | == グラフィカルインターフェイス == |
||
− | Octave 3.8 から、Octave には Qt を使った独自の (実験的な) GUI が搭載されています。4.0.0 リリースから、この GUI はデフォルトで有効になりました。{{ic|octave}} を実行するだけで GUI が起動します。 |
||
+ | {{ic|.ods}}、{{ic|.xls}}、および {{ic|.xlsx}} ファイルは、{{ic|odsread}} または {{ic|xlsread}} 関数を使用して開くことができます。 {{AUR|octave-io}} パッケージが必要です。 |
||
− | 以下の GUI は非公式です: |
||
− | * {{App|Cantor|複数のバックエンド (Scilab, Maxima, Octave など) に数値計算を任せるグラフィカルユーザーインターフェイス。|http://edu.kde.org/cantor/|{{Pkg|cantor}}}} |
||
− | * {{App|QtOctave|Octave の Qt フロントエンド。|https://forja.rediris.es/projects/csl-qtoctave/|{{AUR|qtoctave}}{{Broken package link|package not found}}}} |
||
+ | octave:1> odsread('myfile.ods'); |
||
− | === Documentation タブのバグ === |
||
+ | octave:1> xlsread('myfile.xls'); |
||
+ | octave:1> xlsread('myfile.xlsx'); |
||
+ | === CSV形式に変換する === |
||
− | Octave バージョン 3.8.1 現在、公式 GUI の Documentation タブのリンクをクリックすると GUI がフリーズすることがあります。[https://savannah.gnu.org/bugs/?38305 バグレポート #38305] によれば、Octave と Qt のシグナルハンドラが衝突するのが原因とされています。 |
||
+ | {{ic|.xls}} ファイルを Octave で使う一番簡単な方法は [[LibreOffice]] の Calc (1024列まで制限) や [http://www.calligra-suite.org/ Calligra Suite] の [https://www.calligra.org/sheets/ Sheets] (32768例まで制限) を使って {{ic|.csv}} や {{ic|.ods}} に変換することです。 |
||
− | [https://lists.gnu.org/archive/html/help-octave/2014-03/msg00049.html 解決法] としては次のコマンドで {{ic|/usr/share/info/octave.info*}} にある Octave の Info ファイルを unzip することで解決します: |
||
− | # gunzip /usr/share/info/octave.info* |
||
+ | 変換が完了したら、{{ic|.csv}} ファイルに対して組み込み Octave 関数 {{ic|csvread}} を使用できます。 |
||
− | もしくは Documentation タブは無視して別の Info リーダーを使って下さい。 |
||
+ | |||
+ | octave:1> csvread('myfile.csv'); |
||
+ | == トラブルシューティング == |
||
− | == Microsoft Excel スプレッドシートを読み込む == |
||
+ | === Zsh デコード不可能なトークン === |
||
− | Octave で Microsoft Excel のファイルを読み込む方法は複数存在します。 |
||
+ | エラーが発生した場合 |
||
− | ==== オープンフォーマットに変換する ==== |
||
+ | undecodable token: b(hex)[23m |
||
+ | {{Pkg|grml-zsh-config}} をインストールして再ログインしてください。 |
||
+ | === vi モード解読不可能なトークン === |
||
− | {{ic|.xls}} ファイルを Octave で使う一番簡単な方法は [[LibreOffice]] の Calc (1024列まで制限) や [http://www.calligra-suite.org/ Calligra Suite] の [http://www.calligra.org/sheets/ Sheets] (32768例まで制限) を使って {{ic|.csv}} や {{ic|.ods}} に変換することです。 |
||
+ | たとえば、{{ic|.inputrc}} が vi モード用に設定されているユーザー |
||
− | 変換したら Octave の {{ic|csvread}} 関数を使って {{ic|.csv}} ファイルを利用できます: |
||
+ | {{hc|~/.inputrc|<nowiki> |
||
− | |||
+ | $include /etc/inputrc |
||
− | octave:1> csvread('myfile.csv'); |
||
+ | set editing-mode vi |
||
+ | $if mode=vi |
||
+ | set show-mode-in-prompt on |
||
− | {{ic|.ods}} ファイルの場合、{{ic|odsread}} 関数を含んでいる {{AUR|octave-io}} パッケージが必要です: |
||
+ | set vi-ins-mode-string \1\e[6 q\2 |
||
+ | set vi-cmd-mode-string \1\e[2 q\2 |
||
+ | set keymap vi-command |
||
− | octave:1> odsread('myfile.ods'); |
||
+ | # these are for vi-command mode |
||
+ | Control-l: clear-screen |
||
+ | Control-a: beginning-of-line |
||
+ | |||
+ | set keymap vi-insert |
||
+ | # these are for vi-insert mode |
||
+ | Control-l: clear-screen |
||
+ | Control-a: beginning-of-line |
||
+ | |||
+ | $endif</nowiki>}} |
||
+ | Octave GUI プロンプトに {{ic|q>> undecodable token: \001b(hex)[6\0020(hex)}} として表示される場合、破損している可能性があります。 |
||
+ | これを解決するには、上記の {{ic|.inputrc}} を次のように変更して、Octave の {{ic|show-mode-in-prompt}} 設定を無効にします。 |
||
+ | {{hc|~/.inputrc|<nowiki> |
||
+ | $include /etc/inputrc |
||
+ | set editing-mode vi |
||
+ | $if mode=vi |
||
+ | |||
+ | $if Octave |
||
+ | set show-mode-in-prompt off |
||
+ | $else |
||
+ | set show-mode-in-prompt on |
||
+ | set vi-ins-mode-string \1\e[6 q\2 |
||
+ | set vi-cmd-mode-string \1\e[2 q\2 |
||
+ | set keymap vi-command |
||
− | {{ic|.xlsx}} ファイルの場合 [[AUR]] の {{AUR|xlsx2csv}}{{Broken package link|{{aur-mirror|xlsx2csv}}}} パッケージを使います: |
||
+ | # these are for vi-command mode |
||
+ | Control-l: clear-screen |
||
+ | Control-a: beginning-of-line |
||
+ | set keymap vi-insert |
||
− | xlsx2csv -t /path/to/save/location -x /path/to/myfile.xlsx |
||
+ | # these are for vi-insert mode |
||
+ | Control-l: clear-screen |
||
+ | Control-a: beginning-of-line |
||
+ | $endif |
||
+ | $endif</nowiki>}} |
||
− | ==== Octave から xls ファイルを直接読み込む ==== |
||
+ | == 参照 == |
||
− | XLS ファイルを使わざるをえず何らかの理由で CSV や ODS に変換できない場合、{{AUR|octave-io}} パッケージの {{ic|xlsread}} 関数を使うことができます。 |
||
+ | * [[Wikipedia:ja:GNU Octave]] |
||
− | {{AUR|octave-io}} バージョン 1.2.5 から、'OCT' という名前のインターフェイスが追加されており、とくに依存パッケージを必要とせず .xlsx (.xls ではありません), .ods, .gnumeric の読み取りができます。ただし、Java ベースのインターフェイスは未だに存在します (特に .xls ファイルを読みこんだり、それらのファイル形式で書き出すときに必要)。 |
2023年12月31日 (日) 00:56時点における最新版
公式ウェブサイト より:
- GNU Octave は主に数値解析を目的とした高水準インタプリタ言語です。線形ならびに非線形問題を数値的に解いたり、他の数値実験を行うことができます。データを可視化したり操作するためのグラフィック機能も備えています。通常、Octave は対話式のコマンドラインインターフェイスから使われますが、非対話式のプログラムを書くのにも使うことができます。Octave 言語は Matlab とよく似ているためプログラムを簡単に移植可能です。
目次
インストール
GUI インターフェイスは octave --gui
で起動し、コマンドラインインターフェイスは octave-cli
で起動します。
他のGUI インターフェイス
標準の GUI インターフェイスは octave パッケージに含まれています。それ以外の非公式 GUI フロントエンドも利用できます:
- Cantor — 数学的演算をいくつかのバックエンド (Scilab、Maxima、Octave など) の 1 つに委任するグラフィカルユーザーインターフェイス。
- JupyterLab — Octave を含む多くのプログラミングバックエンドをサポートするブラウザベースの対話型環境。
パフォーマンス
Octave は、デフォルトで線形代数計算に blas パッケージを使用します。ただし、この実装では最新の CPU 命令を利用していません。パフォーマンスを高速化するために、openblas パッケージを blas のドロップイン置換としてインストールできます。Intel CPU の場合は intel-oneapi-mkl、NVIDIA GPU の場合は cuda など、利用可能なハードウェアに応じて他の BLAS 実装も使用できます。
この点を説明するために、次のコードを使用して、NxN 行列の乗算で実行される GFLOPS の推定値を取得できます:
N = 4096; A = single(rand(N, N)); B = single(rand(N, N)); start = clock(); C = A * B; elapsedTime = etime(clock(), start); gFlops = 2 * N * N * N / (elapsedTime * 1e9)
Intel Core i7-9750H で次のコードを実行します。
octave ~/test_program.m
gFlops = 3.7222
openblas をインストールし、単一スレッドでプログラムを実行した後:
OMP_NUM_THREADS=1 octave ~/test_program.m
gFlops = 121.55
openblas に 9750H で利用可能な 12 スレッドをすべて使用させた後:
OMP_NUM_THREADS=12 octave ~/test_program.m
gFlops = 281.33
Octave-Forge
Octave は Matlab の Toolbox と同じようなパッケージのセットを Octave-Forge から提供しています。パッケージの完全なリストは こちら にあります。
パッケージは Octave から直接インストールすることも、AUR からインストールすることもできます。下を見て下さい。
Octave のインストーラーを使う
Octave のインストーラーを使うことでパッケージを管理できます。パッケージは ~/octave
にインストールされます。-global オプションを使用した場合はシステムディレクトリにインストールされます。パッケージをインストールするには:
octave:1> pkg install -forge packagename
パッケージをアンインストールするには:
octave:3> pkg uninstall packagename
Octave によって自動的にロードされるパッケージもありますが、ロードされない場合:
octave:4> pkg load packagename
または:
octave:5> pkg load all
パッケージがロードされているかどうかは pkg list
を使って確認します。アスタリスクが付いているパッケージが既にロードされているパッケージです。
Octave の起動時に全てのパッケージがロードされるようにするには:
/usr/share/octave/site/m/startup/octaverc
## System-wide startup file for Octave. ## ## This file should contain any commands that should be executed each ## time Octave starts for every user at this site. pkg load all
AUR を使う
いくつかのパッケージは AUR に存在します (パッケージを検索)。Octave-forge の新しいパッケージは Archlinux 用の Octave-forge ヘルパースクリプト を使うことで半自動的に Arch 用のパッケージを作成できます。
プロット
Qt がデフォルトのプロットバックエンドです:
>> available_graphics_toolkits ans = { [1,1] = fltk [1,2] = qt } >> graphics_toolkit ans = qt
あるいは、FLTK または gnuplot をバックエンドに使うこともできます:
>> graphics_toolkit("gnuplot");
上記の変更を永続化させるには ~/.octaverc
ファイルに追加してください。
Microsoft Excel スプレッドシートを読み込む
.ods
、.xls
、および .xlsx
ファイルは、odsread
または xlsread
関数を使用して開くことができます。 octave-ioAUR パッケージが必要です。
octave:1> odsread('myfile.ods'); octave:1> xlsread('myfile.xls'); octave:1> xlsread('myfile.xlsx');
CSV形式に変換する
.xls
ファイルを Octave で使う一番簡単な方法は LibreOffice の Calc (1024列まで制限) や Calligra Suite の Sheets (32768例まで制限) を使って .csv
や .ods
に変換することです。
変換が完了したら、.csv
ファイルに対して組み込み Octave 関数 csvread
を使用できます。
octave:1> csvread('myfile.csv');
トラブルシューティング
Zsh デコード不可能なトークン
エラーが発生した場合
undecodable token: b(hex)[23m
grml-zsh-config をインストールして再ログインしてください。
vi モード解読不可能なトークン
たとえば、.inputrc
が vi モード用に設定されているユーザー
~/.inputrc
$include /etc/inputrc set editing-mode vi $if mode=vi set show-mode-in-prompt on set vi-ins-mode-string \1\e[6 q\2 set vi-cmd-mode-string \1\e[2 q\2 set keymap vi-command # these are for vi-command mode Control-l: clear-screen Control-a: beginning-of-line set keymap vi-insert # these are for vi-insert mode Control-l: clear-screen Control-a: beginning-of-line $endif
Octave GUI プロンプトに q>> undecodable token: \001b(hex)[6\0020(hex)
として表示される場合、破損している可能性があります。
これを解決するには、上記の .inputrc
を次のように変更して、Octave の show-mode-in-prompt
設定を無効にします。
~/.inputrc
$include /etc/inputrc set editing-mode vi $if mode=vi $if Octave set show-mode-in-prompt off $else set show-mode-in-prompt on set vi-ins-mode-string \1\e[6 q\2 set vi-cmd-mode-string \1\e[2 q\2 set keymap vi-command # these are for vi-command mode Control-l: clear-screen Control-a: beginning-of-line set keymap vi-insert # these are for vi-insert mode Control-l: clear-screen Control-a: beginning-of-line $endif $endif