「Octave」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(参照を翻訳して追加)
 
(4人の利用者による、間の10版が非表示)
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}}
   
[http://www.gnu.org/software/octave/ 公式ウェブサイト] より:
+
[https://www.gnu.org/software/octave/ 公式ウェブサイト] より:
   
 
:''GNU Octave は主に数値解析を目的とした高水準インタプリタ言語です。線形ならびに非線形問題を数値的に解いたり、他の数値実験を行うことができます。データを可視化したり操作するためのグラフィック機能も備えています。通常、Octave は対話式のコマンドラインインターフェイスから使われますが、非対話式のプログラムを書くのにも使うことができます。Octave 言語は Matlab とよく似ているためプログラムを簡単に移植可能です。''
 
:''GNU Octave は主に数値解析を目的とした高水準インタプリタ言語です。線形ならびに非線形問題を数値的に解いたり、他の数値実験を行うことができます。データを可視化したり操作するためのグラフィック機能も備えています。通常、Octave は対話式のコマンドラインインターフェイスから使われますが、非対話式のプログラムを書くのにも使うことができます。Octave 言語は Matlab とよく似ているためプログラムを簡単に移植可能です。''
   
 
== インストール ==
 
== インストール ==
Octave は[[公式リポジトリ]]の {{Pkg|octave}} パッケージ[[Pacman|インストール]]できます
+
{{Pkg|octave}} パッケージ[[インストール]]してください
   
{{Note|デォルトでパッケージに含まれている {{ic|octave}} コマンドは GUI を起動しようとするため、GUI を使うのに必要な {{Pkg|qscintilla}}{{Broken package link|パッケージが存在しません}} がインストールされていない場合コマンドが実行できません。コマンドラインインターフェイスを起動するときは {{ic|octave-cli}} コマンドを使って下さい}}
+
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行目:
 
== プロット ==
 
== プロット ==
   
Octave公式プロットバックエンドは2つあります:
+
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 を使うようにすることもできます:
 
   
octave:1> graphics_toolkit("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|パッケージが存在しません}}}}
 
   
  +
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 とよく似ているためプログラムを簡単に移植可能です。

インストール

octave パッケージをインストールしてください。

GUI インターフェイスは octave --gui で起動し、コマンドラインインターフェイスは octave-cli で起動します。

他のGUI インターフェイス

標準の GUI インターフェイスは octave パッケージに含まれています。それ以外の非公式 GUI フロントエンドも利用できます:

  • Cantor — 数学的演算をいくつかのバックエンド (Scilab、Maxima、Octave など) の 1 つに委任するグラフィカルユーザーインターフェイス。
https://edu.kde.org/cantor/ || cantor
  • JupyterLab — Octave を含む多くのプログラミングバックエンドをサポートするブラウザベースの対話型環境。
https://jupyterlab.readthedocs.io/en/stable/ || jupyterlab+jupyter-octave_kernelAUR

パフォーマンス

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
ノート: control など、Octave のパッケージの中には、コンパイルしてインストールするために Arch Linux のパッケージである gcc-fortran を必要とするものがあります。

パッケージをアンインストールするには:

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 SuiteSheets (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

参照