GNU Octave 2.1.x 日本語マニュアル/始めましょう

この章では,Octave の基本機能のいくつかについて説明しています。 これには,Octaveセッションを開始する方法,コマンドプロンプトでヘルプを得る方法,コマンドラインの編集のしかた,およびシェルからコマンドとして実行するためのOctave プログラムを書く方法が含まれています。
通常は,何も引数を与えずに‘octave’ を実行することにより,Octave は対話的に使用することができます。 一度開始してしまえば,終了の命令を与えるまで,Octave は端末からコマンドを読み込みます。 コマンドラインでファイル名を指定することもできます。 そのとき,Octave はそのファイルを読み込んで実行し,末尾まで読み込んだ後に終了します。 次の節で解説してあるコマンドラインオプションを使用することにより,どのようにOctave を起動するかを,さらにコントロールすることができます。
Octave が受け入れるすべてのコマンドラインオプションの完全な一覧を示します。
-d パーサデバッグモードに入ります。このオプションを使うと,Octave のパーサが,読み込んだコマンドについて多くの情報を表示するようになります。 これは,おそらく実際にパーサのデバッグを試みるときにのみ有用でしょう。
-commands
-x コマンドが実行されるときに,そのコマンドを表示します。
実行すべきプログラムを検索するパスを指定します。 コマンドラインで指定したpath の値は,環境変数OCTAVE_EXEC_PATH の値を上書きすることになります。 しかし,組み込み変数EXEC_PATH をセットしているシステムあるいはユーザのスタートアップファイル内のコマンドには影響しません。
-h
-?
短いヘルプメッセージを表示して終了します。
使用すべきinfo ファイルの名前を指定します。 コマンドラインで指定したfilename の値は,環境変数OCTAVE_INFO_FILE の値を上書きすることになります。 しかし,組み込み変数INFO_FILE をセットしているシステムあるいはユーザのスタートアップファイル内のコマンドには影響しません。
使用すべきinfo プログラムの名前を指定します。コマンドラインで指定したprogramの値は,環境変数OCTAVE_INFO_PROGRAM の値を上書きすることになります。しかし,組み込み変数INFO_PROGRAM をセットしているシステムあるいはユーザのスタートアップファイル内のコマンドには影響しません。
-i 強制的に対話的挙動をするようにします。 これは,リモートシェルコマンドあるいはEmacs のシェルバッファを通してOctave を実行する際に有用です。 Emacs 内でOctaveを実行するための別の方法は,付記D [Emacs]を参照してください。
-H コマンドライン履歴を使用できなくします。
ファイル‘~/.octaverc’あるいは‘.octaverc’を読みません。
コマンドライン編集を不可にします。
site-wide ‘octaverc’ ファイルを読みません。
-f 起動時に一切のシステムあるいはユーザ初期化ファイルを読みません。これは,--no-init-fileと--no-site-fileの両方のオプションを指定したものと等価です。
-p path 関数ファイルの検索パスを指定します。コマンドラインで指定したpath の値は,環境変数OCTAVE_PATH の値を上書きすることになります。しかし,組み込み変数LOADPATHをセットしているシステムあるいはユーザのスタートアップファイル内のコマンドには影響しません。
-q 起動時のメッセージとバージョン情報を表示しません。
Matlab との互換性を保つため,ユーザ設定変数の初期値として,以下の値をセットします。
-V 冗長な出力に切り替えます。
-v プログラムのバージョン番号を表示して終了します。
fileからコマンドを実行します。
Octave には,引数の数やオプションのすべてなど,コマンドラインについての情報を含む組み込み関数がいくつかあります。
Octave に渡されたコマンドライン引数は,この変数によって得ることができる。たとえば,以下のコマンドによりOctave を起動したとすれば,
argvは,--no-line-editingと--silentを含む文字列型配列となります。
もし実行可能なOctave スクリプトを入力したならば,argvはスクリプトに渡された引数リストを含む。実行可能なOctave スクリプトを作成する方法の一例はSection 2.6 [Executable Octave Programs]を参照してください。
[Built-in Variable]
[Built-in Variable]
Octave が開始するとき,組み込み変数program_invocation_nameには,Octave を起動するためにシェルに入力した名前が自動的にセットされます。また,program_nameの値には,program_invocation_nameの最後の成分が自動的にセットされます。たとえば,Octave を起動するために‘/usr/local/bin/octave’と打ち込んだならば,program_invocation_nameは"/usr/local/bin/octave" という値をとり,program_nameは"octave"という値となります。
コマンドラインからスクリプトを実行する(たとえば,octave foo.m のように打ち込む)ならば,プログラム名は,スクリプトのファイル名にセットされます。実行可能なOctave スクリプトを作成する方法の一例はSection 2.6 [Executable Octave Programs]を参照してください。これらの変数を,Octave のコマンドラインを再生成するために使用した例を示します。
注:MATLABとの互換性を保つためには、"endfor"ではなく、"end"を使用した方が良い。
Section 10.1 [Index Expressions] では,Octave において,どのように文字列や部分文字列の添え字を適切に扱うかを説明しています。また,Section 13.1 [Defining Functions] には,変数narginについての情報があります。
Octave を起動したとき,以下に示すファイルから,実行すべきコマンドを検索します。 octave-home/share/octave/site/m/startup/octavercoctave-home は,Octave がインストールされているディレクトリ( 標準では‘/usr/local’)です。
このファイルが存在すると,インストールしたOctave の全てのバージョンについて,全てのユーザに対して広域的に標準のOctave 環境を変更することとなります。このファイルを変更するときには,いくぶん注意が必要です。というのも,Octave を利用するすべてのユーザが影響を受けるからです。
octave-home は,Octave がインストールされているディレクトリ( 標準では‘/usr/local’)です。このファイルが存在すると,インストールしたOctave の特定のバージョンについて,全てのユーザに対して広域的に標準のOctave 環境を変更することとなります。このファイルを変更するときには,いくぶん注意が必要です。というのも,Octave を利用するすべてのユーザが影響を受けるからです。
このファイルは,通常は,標準のOctave 環境に個人的な変更を加えるために使用します。
このファイルは,特定のプロジェクトに対して,標準のOctave 環境を変更するために使用することができます。Octave は,‘~/.octaverc’を読み込んだ後に,カレントディレクトリにおいてこのファイルを検索します。‘~/.octaverc’ファイルでcdコマンド利用すると,Octave が‘.octaverc’を検索するディレクトリも影響を受けます。もし,ホームディレクトリでOctave を起動するならば,ファイル‘~/.octaverc’ からのコマンドは一度だけ実行されるでしょう。もしOctave を起動するときに--silentではなく,--verboseオプションをつけるならば,各スタートアップファイルを実行するときには,メッセージを表示するようになります。スタートアップファイルには,妥当な任意のOctave コマンドや関数の定義を含めることができます。
[Built-in Function]
[Built-in Function]
現在のOctave セッションを終了します。オプション引数として整数status を与えるならば,これをOctave の終了ステータスとしてオペレーティングシステムに渡します。
[Built-in Function]
Octave が終了するときに呼び出す関数を登録します。たとえば,
この例は,Octave が終了するときにメッセージを表示することになります。
このマニュアルの完全な文章は,Octave プロンプトからhelp -iというコマンドを入力することにより入手できます。さらに,個々のユーザ作成関数および変数についてのドキュメントも,helpコマンドを通して得ることができます。この節ではマニュアル,およびユーザ提供関数や変数に対するドキュメントを読むために使用されるコマンドについて述べています。あなたの書いた関数に対して,どのように文書化すべきかについてのさらなる情報は,Section 13.6 [Function Files] を参照してください。
[Command]
Octave のhelpコマンドは,GNU Info ブラウザを用いて,簡略な使用法を述べたメッセージを表示する,あるいは印刷マニュアルのオンライン版から直接情報を表示するために使用されます。このコマンドを引数なしで呼び出すならば,全ての利用可能な演算子,関数および組み込み変数のリストを出力します。もし1 番目の引数が-iであれば,与えられたトピックに対して,このマニュアルのオンライン版の索引を表示します。 たとえば,help helpは,helpコマンドを説明する短いメッセージを表示し,help -i helpはマニュアルのオンライン版のこのノードにおいて,GNU Info ブラウザを起動します。いちどGNU Info ブラウザを実行すると,キー入力C-hを使用することにより,その使用法についてのヘルプを得ることができる。 helpコマンドは,演算子についての情報を提供します。しかし,コマンドの区切りとして使用されるカンマやセミコロンについては,そうはいきません。それらに関するヘルプを得るには,helpcommaあるいはhelp semicolon と打ち込まなければなりません。
[Built-in Variable]
変数INFO_FILEは,Octave のinfo ファイルの位置を表す。初期状態では,"octavehome/info/octave.info"です。ここでoctave-home は,Octave がインストールされたディレクトリです。
[Built-in Variable]
変数INFO_PROGRAMは,実行すべきinfo プログラムを表す。初期状態では,"octavehome/libexec/octave/version/exec/arch/info" です。ここでoctave-home はOctave がインストールされたディレクトリ,version はOctave のバージョン番号,およびarch はシステムのタイプ(たとえばi686-pc-linux-gnu)です。初期値は,環境変数OCTAVE_INFO_PROGRAM,あるいはコマンドライン引数--info-program NAME,さらにはスタートアップファイルにおいてINFO_PROGRAM変数に値をセットすることで上書きされます。
[Built-in Variable]
変数MAKEINFO_PROGRAMは,Octave がTexinfo マークアップコマンドを含むヘルプ文章を書式化するために起動するmakeinfo プログラムを表す。その初期値は"makeinfo"です。
[Built-in Variable]
もしsuppress_verbose_help_messageの値がゼロでないならば,Octave はhelpコマンドからの出力あるいは組み込みコマンドの使用法メッセージの末端に,追加のヘルプ情報を追加することになります。
Octave は,広範囲なコマンドライン編集とヒストリ機能を提供するために,GNU readline ライブラリを使用しています。このマニュアルでは,最もよく使用される機能のみを解説しています。さらなる情報は,GNU Readline ライブラリのマニュアルを参照してください。
印刷可能文字(アルファベット,数字,機能など)を入力するには,単にその文字を打ち込みます。Octave は,その文字を挿入し,カーソルを次に進めます。コマンドライン編集機能の多くは,制御文字を使用して操作します。たとえば,Control-aという文字は,カーソルを行の先頭に移動します。C-aを入力するには,hCTRLiキーを押したままhaiキーを押します。次の節では,Control-aのような制御文字をC-aと表記しています。コマンドライン編集機能の別のセットは,メタ文字を使用します。ある端末では,hMETAiキーを押しながらhuiを押すことにより,M-uを打ち込みます。もし使用している端末にhMETAiキーが無いならば,ESCキーで始まる2 文字を入力することにより,メタ文字を入力できます。したがって,M-u を入力するには,hESCihuiと打ち込めばよいのです。ESC入力法は,メタキーを持つ端末においても使用できます。以降の節において,Meta-u という¥メタ文字は,M-uと表記しています。
以下のコマンドは,カーソルを移動するものです。
上の表は,入力行の編集を行うために必要な,最も基本的なキーストロークについて解説しています。大部分の端末においては,カーソルを進めたり戻したりするには,C-fやC-bの代わりに矢印キーを使用できます。 C-fが1文字進めるのに対して,M-fは1単語進めることに注意してください。おおざっぱに言えば,コントロールキーの組み合わせは文字を操作するものであって,メタキーの組み合わせは単語を操作するのです。Octave プログラム内でスクリーンをクリアする関数もあります。
[Built-in Function]
[Built-in Function]
端末のスクリーンをクリアし,カーソルを左上隅に移動します。
テキストを切り取る(killing)というのは,その行からテキストを削除し,後で使用するためにその内容を保存しておくことです。通常は,貼り付け(yanking)することにより,それを行に戻します。もしコマンドについての解説で,テキストを「切り取る」という表現があるならば,後でテキストを違う位置(または同じ位置)に戻すことになると思ってください。
テキストを切り取るためのコマンド一覧を示します。
切り取りコマンドを使用するとき,そのテキストは切り取りリング(kill-ring)に保存されます。任意回数の連続した切り取りは,切り取ったテキストとともに保存されます。その結果,それを貼り付けして戻すとき,それを一気に得ることがことができます。切り取りリングは,特定の行についてのものではありません。つまり,以前に入力した行において切り取ったテキストは,別の行を入力しているときに,後に貼り付けのために利用することができます。
以降のコマンドは,特別な意味を持つ文字(たとえばTABやC-qなど),を入力する,あるいはタイプミスを素早く修正するために使用できます。
以下のコマンドは,Octave でコマンドや変数名を補完できるようにするものです。
completion_append_charの値は,コマンドライン補完の試みがうまくいったときに付加する文字として使用します。初期状態の値は," "(単一のスペース)です。
[Built-in Function]
hint により与えられる可能な補完を生成します。この関数は,Emacs のようなOctave を操作したりユーザの入力を管理できるようなプログラムの利便のために提供されています。この関数が呼ばれるとき,現在のコマンド番号はインクリメントされません。これは仕様であり,バグではありません。
Octave は,通常,あなたがタイプしたコマンドの履歴を保持しています。これにより,編集や再実行するために以前のコマンドを呼び出すことができます。Octave を終了するとき,最も最近入力したコマンドはファイルに保存されます。保存数の上限は,history_sizeなる変数で指定されます。Octave を起動するとき,変数history_fileで指定したファイル名から,コマンドの初期リストを読み込みます。 履歴リストを単純に閲覧および検索するためのコマンドを示します。
hRETi カーソル位置にかかわらず,その行を受け入れます。この行が空でないならば,それを履歴リストに追加します。もしこの行が履歴行であったならば,その履歴行をもとの位置に復元します。
大部分の端末では,履歴リストをたぐるために,C-pおよびC-nの代わりに矢印キーも使うことができます。 履歴リストを移動するためのキーボードコマンドに加えて,Octave は,履歴リストからのコマンド群を閲覧,編集,再実行するための関数を提供しています。
もし引数なし実行するならば,historyは,あなたが実行したコマンドのリストを表示します。以下のオプションが使用できる。
n 履歴の最近n 行のみを表示します。
たとえば,最近入力した5 つのコマンドを,行番号なしで表示するには,history -q 5 というコマンドを使用します。
もし引数なしで実行するならば,edit_historyは,EDITOR変数で指定したエディタを使用して履歴リストを編集できるようにします。編集されることになるコマンド群は,最初にテンポラリファイルへとコピーされます。エディタを終了するとき,Octave は,そのファイルに残ったコマンドを実行します。関数を定義するためにedit_historyを使う方が,コマンドラインに直接入力しようとするよりも,より便利です。標準設定により,一連のコマンドは,エディタを終了するとすぐに実行されます。コマンドの実行を避けるためには,エディタを終了する前に,バッファから単に全ての行を削除してください。edit_historyコマンドは,編集したい最初と最後のコマンドの履歴番号を指定するための2つのオプション引数をとります。たとえば,以下のコマンド
は,履歴リストの13 番目から最後までの全てのコマンドを取り出します。以下のコマンドedit_history 13 169は,13 番目から169 番目までのコマンドのみを展開します。最初の番号よりも2 番目の番号に大きい値を指定するならば,編集するためのバッファにおく前に,コマンドのリストを逆順にします。もし両方の引数を省略するならば,履歴リストに存在する以前のコマンドが使用されます。run_history [first] [last] [Command]edit_historyと同様であるが,エディタを実行せず,履歴リストに存在するコマンドを単に実行します。
[Built-in Variable]
この変数は,コマンド履歴を保存するために使用するファイル名を指定します。標準の値は"~/.octave_hist"であるが,環境変数OCTAVE_HISTFILEによって上書きすることができる。
[Built-in Variable]
この変数は,どのくらいの項目を履歴ファイルに保存するかを指定します。標準の値は1024であるが,環境変数OCTAVE_HISTSIZEによって上書きすることができる。
[Built-in Variable]
もし変数saving_historyがゼロでないならば,コマンドラインで入力した行が,変数history_fileによって指定したファイルに保存されます。
以下の変数は,コマンドラインプロンプトの見た目をカスタマイズするために利用できます。Octaveでは,バックスラッシュでエスケープされる数々の特殊文字を挿入することにより,プロンプトをカスタマイズできるようになっています。それらの特殊文字は,以下のように解釈されます。
プライマリプロンプトの文字列です。対話的に実行するとき,Octave がコマンドを読み込む準備ができたときに,プライマリプロンプトを表示します。 PS1の初期値は"\s:\#> "です。これを変更するには,
のようなコマンドを入力します。これは,ホスト‘kremvax.kgb.su’にログインしたユーザ‘boris’について,‘boris@kremvax> ’なるプロンプトになるだろう。2 つのバックスラッシュは,文字列に1 個のバックスラッシュを入力するために必要であることに留意してください。Chapter 5 [Strings] を参照してください。
セカンダリプロンプトの文字列です。これは,Octave が,コマンド入力を完了するために追加入力を期待するときに表示するものです。たとえば,複数行にわたる関数を定義するとき,Octave は,2 行目以降の各行の先頭にPS1の値を表示することになります。PS2の初期値は">"です。
もしOctave が--echo-commandsオプションをつけて起動されるならば,各入力行をエコーする前にPS4の値を表示します。PS4の初期値は\n"+ "です。--echo-commandsの解説は,Section 2.1 [Invoking Octave] を参照してください。
Octave の日記機能は,打ち込んだ入力およびOctave が表示した出力を記録することにより,対話セッションの全ての実行結果(ログ)を,別のファイルに保存できるようにします。
全てのコマンドおよびそれらが生み出した出力結果のリストを生成します。これは,端末で見えているように,入力と表示を一緒に混ぜる。
ときどき,関数あるいはスクリプトが評価されるときに,そのコマンドを見ることが有用なこともあります。これは,ある種の問題のデバッグに特に役立ちます。
コマンドを実行したときに,それを表示(エコー)するかどうかどうかをコントロールします。以下のオプションが利用できる。
この変数は,エコー設定をコントロールするために使用されます。これは,以下の値の合計となります。
1つ以上の設定を同時に行うことができる。たとえば,3 という値は,echo on allコマンドと等価です。echo_executing_commandsの値は,echoコマンドおよびコマンドラインオプション--echo-inputによって設定されます。
Octave は,妥当ではないプログラムについて,2 種類のエラーを報告します。もしOctave が打ち込まれた内容を理解できないならば,parse error が発生します。たとえば,キーワードのスペルを間違ったとします。
Octave は,以下のようなメッセージをただちに表示するでしょう。
大部分のパースエラーについて,Octave では,あなたの入力で意味をなすことのできない行の位置をマークするために,キャレット記号(‘^’)を使用します。この例の場合,functionというキーワードのスペルが誤っていたため,Octave はエラーを生成しました。‘function f’と解釈するのではなく,Octave は2 つの連続する変数名として解釈しました。これは,この文脈では妥当ではありません。yにおいてエラーをマークしたのは,最初の名前(functon)がそれ自身,妥当な入力として受け入れられたからです。
エラーメッセージの別の種類は,評価時に発生します。これらのエラーは実行時(ランタイム)エラー,あるいは時々評価エラーとも呼ばれます。これは,それらのエラーは,プログラムが実行(run),あるいは評価(evaluated)されたときに発生することによるものです。たとえば,以前の関数定義におけるミスを修正した後に,以下のように打ち込むとします。
Octave は以下のように応答するでしょう。
このエラーメッセージは複数の部分に分かれており,エラーの原因を突き止める手助けとなる一片の情報を与えています。これらメッセージは,最も奥にあるエラー点から生成されており,式および関数呼び出しを囲むトレースバックを提供します。
上の例において,最初の行は,‘x’なる名前の変数が,何かの関数あるいは式の1 行24 桁目付近で定義されていないことが判明したことを示しています。関数内で発生したエラーについて,その行は,関数の定義を含むファイルの始まりからカウントされます。トップレベルで発生したエラーについて,その行番号は,入力行の番号を示します。これは,通常はプロンプト文字列に示されています。この例の2 行目および3 行目は,代入式でエラーが発生したことを示しており,エラーメッセージの最後の行は,エラーが関数fの中で発生したことを示しています。もし仮に,関数fが別の関数(たとえばg)から呼ばれていたならば,エラーのリストはもう1 行多くなったことでしょう。
これらの関数呼び出しリストは,ふつうは,エラーが起こる前にプログラムを実行したパスをかなり容易にたどれるようになっており,再度実行する前にエラーを修正しやすくなっています。
いちどOctave を習得してしまえば,‘#!’スクリプト機構を使用して,自己完結型のOctave スクリプトを書きたいと思うかもしれません。これは,GNU システムおよび多くのUNIX システム1 で実行できます。 たとえば,以下のような行を含む‘hello’という名前のテキストファイルを作成してみます(ここでoctave-interpreter-name は,お使いのOctave バイナリの完全なファイル名で置き換えるべきです)。
このファイルを(chmodを用いて)実行可能にした後,シェルから単に以下のように入力できます。helloシステムは,以下のように入力したかのようにOctave を実行する手はずを整えるでしょう。
‘#!’で始まる行は,実行すべきインタプリタのフルパス名と,インタプリタに渡すコマンドライン引数を並べて項目リストとします。オペレーティングシステムは,与えた引数および実行したプログラムの引数リストをつけてインタプリタをを実行します。このリストの最初の項目は,Octave プログラムの完全なファイル名です。項目リストの残りは,Octave のオプション,あるいはデータファイル,またはその両方をとることができます。‘-qf’オプションは,通常の起動時メッセージの表示を抑制し,特定ユーザの‘~/.octaverc’ファイルの内容に依存して異なる挙動をしないようにするため,ふつうは,単独で実行するOctave プログラムにおいて指定されます。これについて,Section 2.1[Invoking Octave] を参照してください。オペレーティングシステムの中には,‘#!’の後に認 識される文字数に制限があるものがあるかもしれません。自己完結型のOctave スクリプトは,プログラムをOctave 言語で記述する知識のないユーザが実行できるプログラムを書きたいときに役立ちます。実行可能なOctave スクリプトを,コマンドライン引数をつけて実行するならば,その引数は組み込み変数argvとして利用することができます。これについて,Section 2.1.1 [Command LineOptions] を参照してください。たとえば以下のプログラムは,それを実行するために使用したコマンドラインを再生産するでしょう。
コメントは,人間が読むためにプログラムに含められ,ふつうはプログラムの一部ではないテキストのことです。コメントは,そのプログラムが行うことと,それがどのような動作をするか説明することができます。ほぼ全てのプログラミング言語は,コメント機能を提供しています。なぜならば,プログラムはコメントなしで理解することは概して困難であるためです。1 ‘#!’機構はBerkeley Unix, System V Release 4,およびいくつかのSystem V Release 3 systems から派生したUNIX システムで動作します。
Octave 言語において,コメントはシャープ記号‘#’,あるいはパーセント記号‘%’のいずれかで始まり,行末まで続きます。Octave インタプリタは,シャープまたはパーセント記号以降の行の内容を無視します。たとえば,関数fに以下のようなコメントをおくことができます。
helpコマンド(Section 2.3 [Getting Help])は,関数のコメントの最初のブロック(コマンドラインから直接入力された関数についても)を見つけることができます。これは,Octaveのユーザが,組み込み関数と自分で定義した関数のヘルプを得るためには,同じコマンドを使用できることを意味します。たとえば,上のように関数fを定義した後,help fというコマンドを実行すると,以下の出力が得られます。
キーボードから入力した一時的なOctave プログラムにコメント行を含めることは可能ですが,ふつうはあまり役に立ちません。なぜならば,コメントの目的は,後から,そのプログラムを入力者または別の人に理解してもらう手助けをすることだからです。