9 変数

編集

変数とは,値に名前を割り当て,それを後に参照できるようにするものです。 多くの例において,すでに変数を見ていることでしょう。 変数の名前は,文字と数値,あるいはアンダースコアから構成されていなければなければなりません。 しかし,数字で始まってはいけません。 Octave は,変数名の長さに制限を設けないようにしています。 しかし,約30文字よりも長い変数名は,まれには役に立つかもしれません。 以下に示す変数名は,いずれも有効です。

     x
     x15
    __foo_bar_baz__
    fucnrdthsucngtagdjb

しかし,__foo_bar_baz__のように,先頭と末尾に2 つのアンダースコアをつけた変数名は,Octaveが内部的に使用するために予約されていると思ってください。 あなたが書こうとするコードには,このような変数名を使うべきではありません。 ただし,Octave の文書化された内部変数および組み込みシンボリック定数にアクセスする場合を除きます。 変数名の大文字と小文字は区別されます。aとAは,異なる変数です。 変数名は,それ自体が妥当な式です。 それは,変数の現在値を表します。変数には,代入演算子あるいはインクリメント演算子によって,新しい値を割り当てます。 Section 10.6 [Assignment Expressions]を参照してください。 いくつかの変数には,特別な意味が込められているものがあります。 たとえば,ansは現在の作業ディレクトリ名を保持しており,piは円周率が割り当てられています。 事前に定義されている全ての変数名のリストは,Section 9.4 [Summary of Built-in Variables]を参照してください。 これらの組み込み変数の中には,定数であって,値が変更できないものがあります。 そのほかの組み込み変数は,ふつうの変数のように値を代入できますが,その値はOctave によって使われたり,自動的に変更されたりします。

Octave における変数には,特定の型はありません。 したがって,同じプログラムにおいて,ある変数にまず数値を格納しておき,後になって同じ変数に文字列を格納することが可能です。 変数は,値を代入する前に使用することはできません。 これを実行しようとすると,エラーになります。

9.1 グローバル変数

編集

グローバル宣言された変数は,きちんと引数として渡すことなく,関数の本体内からアクセスすることができるようになります。 任意の変数は,global宣言ステートメントを使用して,グローバル宣言することができます。 以下の文は,すべてグローバル宣言です。

	global a
	global a b
	global c = 2
	global d = 3 e f = 5

グローバル変数は,globalステートメントにおいて,一度しか初期化されません。 たとえば,以下のようなコードを実行します。

	global gvar = 1
	global gvar = 2

このとき,グローバル変数gvarは1であり,2ではありません。

グローバル変数にアクセスするためには,関数の本体内で変数をグローバルとして宣言しておく必要があります。 たとえば,以下の式について,

	global x
	function f ()
	x = 1;
	endfunction
	f()

グローバル変数xの値は,1にセットされません。 グローバル変数xの値を変更するためには,以下のように,関数の本体内でグローバル宣言を行わなければなりません。

	function f ()
	global x;
		x = 1;
	endfunction

関数の引数リストにグローバル変数を渡すとき,ローカルコピーが生成され,グローバル値は修正されません。 たとえば,ある関数

	function f (x)
		x = 0
	endfunction

が存在し,上の段階でグローバル変数としてxを

	global x = 13

として定義してあるとすれば,

	f (x)

この関数は,関数内部にあるxの値0を表示するでしょう。 しかし,上の段階にあるxの値は変更されません。 なぜならば,この関数は,その引数のコピーについて動作するからです。

isglobal (name)

編集

                                                           [Built-in Function]

もしname がグローバルにアクセスできるならば1 を,そうでなければ0 を返します。以下に例を示します。

	global x
	isglobal ("x")
⇒ 1

9.2 持続型変数

編集

関数内で持続宣言された変数は,次に同じ関数を呼び出すまで,その内容をメモリ内に保持したままになります。 持続変数とグローバル変数の違いは,持続変数は特定の関数内でしか利用できないローカルなものであるのに対し, 後者はどこからでも見ることができることです。 任意の変数は,persistent宣言ステートメントを使用して,持続宣言することができます。 以下の文は,すべて持続宣言です。

	persistent a
	persistent a b
	persistent c = 2
	persistent d = 3 e f = 5

持続変数の挙動は,C言語の静的変数と等価です。 Octave ではstaticコマンドも使用でき,persistentと同じ意味です。 グローバル変数とは異なり,初期化ステートメントごとに変数を再初期化します。たとえば,以下のコード

	persistent pvar = 1
	persistent pvar = 2

を実行した後では,持続変数pvarの値は2になります。

9.3 変数の状態

編集

clear [-x] pattern . . .

編集

                                                                     [Command]

与えられたパターンにマッチする名前を,シンボルテーブルから削除します。 パターンには,以下の特殊文字を含めることができます。

? 任意の1 文字にマッチします。
  • ゼロ文字以上の文字列にマッチします。
[ list ] list によって指定する文字リストのいずれかにマッチします。

もし,最初の文字が!または^であれば,list によって指定された文字を除くすべての文字にマッチします。 たとえば,‘[a-zA-Z]’というパターンは,アルファベットの全ての大文字と小文字にマッチするでしょう。 たとえば,以下のコマンド

clear foo b*r

は,fooという名前と,bという文字で始まりrで終わるすべての名前をクリアします。 もし何も引数を与えずにclearを呼び出すと,すべてのユーザ定義変数(ローカルとグローバルの両方)を,シンボルテーブルから削除します。 もしclearを少なくともひとつ引数を与えて呼び出すならば,引数にマッチする可視的な名前のみをクリアします。 たとえば,fooなる関数を定義してあり,foo = 2を実行して隠してあったと仮定します。 コマンドclear fooを一度実行すると,変数の定義をクリアし,関数としてのfooの定義を元に戻す。 2回目にclear fooを実行すると,関数定義を削除することになる。 -xをつけて実行すると,パターンにマッチしない名前をクリアします。 このコマンドは,関数内で使用することはできません。

who options pattern . . .

編集

whos options pattern . . .

編集

                                                                     [Command]

与えられたパターンにマッチする,現在定義されているシンボルを一覧表示します。利用可能な オプションを以下に示します。これらは,先頭の1 文字に省略することはできるが,組み合わせて 使用することはできない。

-all 現在で意義されているシンボルを,全て表示します。
-builtins

組み込み変数および関数を一覧表示します。これには,現在のところコンパイルさ れている関数ファイルを含みます。しかし,LOADPATHに存在する関数ファイルは含 まれない。

-functions

ユーザ定義関数を一覧表示します。

-long

あるシンボルの型と次元を含めた,詳細な一覧を表示をします。出力結果の1 列目 におけるシンボルは,シンボルとして再定義が可能かどうか,およびクリアでき るかどうかを示しています。

-variables

ユーザ定義変数を一覧表示します。 妥当なパターンは,上で示したclearコマンドの内容と同じです。パターンが与えられなかっ たならば,与えられたカテゴリからの全てのシンボルを表示します。標準状態では,ローカルで 見ることのできるユーザ定義変数および関数のみを表示します。 whosコマンドは,who -longと等価です。

whos options pattern . . . [Command]

whoを参照してください。

whos_line_format

編集

                                                           [Built-in Variable]

この文字列は,表示される変数の属性についての順序を決定します。以下のコマンドを使用します。

%b 変数によって占められるバイト数を表示します。
%e 変数によって保持される要素を表示します。
%n 変数名を表示します。
%p 変数のプロテクト属性を表示します。
%s 変数の次元を表示します。
%t 変数の型名を表示します。

どのコマンドも,修飾子をとることもできます。

l 左寄せにします。
r 右寄せにする(標準設定)。
c 中央寄せにする(コマンド%s にのみ有効)。

コマンドは,以下のように構成されます。

%[modifier]<command>[:size of parameter[:centerspecific[:print dims[:balance]]]];

コマンドおよび修飾子は,すでに説明したとおりです。 size of parameter は,表示に何列必要なのかを指定するものです。 print dims は,表示に何次元必要かを指定します。 もし次数がprint dims を越えるならば,次数はx-D のように表示されます。 center-specific およびprint dims は,コマンド%s にのみ応用することができます。 print dims に負の値を指定すると,どんな場合でも全ての次元を表示するようになります。 balance は,次元文字列を表示するオフセットを指定します。

標準状態のフォーマットは," %p:4; %ln:6; %cs:16:6:8:1; %rb:12; %lt:-1; " です。

exist (name, type) 

編集

                                                           [Built-in Function]

name が変数として存在すれば1,Octave のLOADPATHにある関数ファイル(name に‘.m’を 付加したもの)であれば2,Octave のLOADPATHにある‘.oct’ファイルがあれば3,組み込み 関数であれば5,ディレクトリ名であれば7,組み込み変数であれば101,組み込み定数であれ ば102,(コマンドラインから入力された)ファイルに関連しない関数であれば103 を返します。

それ以外は0 を返します。 この関数は,name で呼び出される通常のファイルがOctave のLOADPATH に存在するならば2を返します。 もしファイルの他の種類について情報が欲しいならば,かわりにfile_in_pathおよびstat関数を適当に組み合わせることになる。 オプション引数としてtype を与えるならば,特定の型に該当する名前についてのみチェックする。 typeには,以下の値を指定できます。

‘"var"’ 変数についてのみチェックします。
‘"builtin"’組み込み関数についてのみチェックします。
‘"file"’ ファイルについてのみチェックします。
‘"dir"’ ディレクトリについてのみチェックします。

document (symbol, text)

編集

                                                           [Built-in Function] symbol に解説文字列text をセットします。 type options name . . . [Command] 関数を参照する各々のname の定義を表示します。 通常は,name がユーザ定義あるいは組み込み関数かどうかも表示します。この挙動を抑制する には-qオプションを使用します。 現在,Octave は明らかにコンパイルされた関数のみを表示します。なぜならば,プログラム文 を再生成するための関数の内部表現を使用するためです。 コメントは表示されません。これは,現在,Octave のパーサが関数ファイルのテキストを内部表 現へと変換するとき,コメントを捨てるからです。この問題は,将来のリリースで修正する 予定です。

which name . . .

編集

                                  [Command]

各々のname の型を表示します。もしname が関数ファイルにより定義されているならば,ファ イルの完全な名前も表示します。

9.4 組み込み変数の要約

編集

Octave の全ての組み込み関数を,その初期状態および追加情報のための相互参照とともに以下にまとめます。 以下の表において,octave-home はOctave がインストールされているルートディレクト リ(標準では‘/usr/local’)を表し,version はOctave のバージョン番号(たとえば2.1.x)を表 し,arch はOctave がコンパイルされたシステムのタイプ(たとえばi586-pc-linux-gnu)を表 します。

DEFAULT_LOADPATH

編集

Section 13.6 [Function Files]を参照してください。 初期値: ".:octave-home/lib/version"

EDITOR

編集

Section 2.4.5 [Commands For History]を参照してください。 初期値: "emacs"

EXEC_PATH

編集

Section 34.3 [Controlling Subprocesses]を参照してください。 初期値: ":$PATH"

INFO_FILE

編集

Section 2.3 [Getting Help]を参照してください。 初期値: "octave-home/info/octave.info"

INFO_PROGRAM

編集

Section 2.3 [Getting Help]を参照してください。 初期値: "octave-home/libexec/octave/version/exec/arch/info" LOADPATH Section 13.6 [Function Files]を参照してください。 初期値: ":", これは,組み込み変数DEFAULT_LOADPATHによって指定されるディレ クトリを使用するようにOctave に伝えます。

OCTAVE_HOME

編集

初期値: "/usr/local" PAGER Chapter 16 [Input and Output]を参照してください。 初期値: "less", or "more"

Section 2.4.7 [Customizing the Prompt]を参照してください。 初期値: "\s:\#> "

Section 2.4.7 [Customizing the Prompt]を参照してください。 初期値: "> "

Section 2.4.7 [Customizing the Prompt]を参照してください。 初期値: "+ "

automatic_replot

編集

Section 17.1 [Two-Dimensional Plotting]を参照してください。 初期値: 0

beep_on_error

編集

Chapter 14 [Error Handling]を参照してください。 初期値: 0

completion_append_char

編集

Section 2.4.4 [Commands For Completion]を参照してください。 初期値: " "

default_save_format

編集

Section 16.1.3 [Simple File I/O]を参照してください。 初期値: "ascii"

crash_dumps_octave_core

編集

Section 16.1.3 [Simple File I/O]を参照してください。 初期値: 1

fixed_point_format

編集

Section 4.1 [Matrices]を参照してください。 初期値: 0

gnuplot_binary

編集

Section 17.3 [Three-Dimensional Plotting]を参照してください。 初期値: "gnuplot"

history_file

編集

Section 2.4.5 [Commands For History]を参照してください。 初期値: "~/.octave_hist"

history_size

編集

Section 2.4.5 [Commands For History]を参照してください。 初期値: 1024

ignore_function_time_stamp

編集

Section 13.6 [Function Files]を参照してください。 初期値: "system"

max_recursion_depth

編集

Section 10.2.2 [Recursion]を参照してください。 初期値: 256

output_max_field_width

編集

Section 4.1 [Matrices]を参照してください。 初期値: 10

output_precision

編集

Section 4.1 [Matrices]を参照してください。 初期値: 5

page_screen_output

編集

Chapter 16 [Input and Output]を参照してください。 初期値: 1

編集

Section 16.1.1 [Terminal Output]を参照してください。 初期値: 1

編集

Section 4.1.1 [Empty Matrices]を参照してください。 初期値: 1

return_last_computed_value

編集

Section 13.5 [Returning From a Function]を参照してください。 初期値: 0

save_precision

編集

Section 16.1.3 [Simple File I/O]を参照してください。 初期値: 17

saving_history

編集

Section 2.4.5 [Commands For History]を参照してください。 初期値: 1

sighup_dumps_octave_core

編集

Section 16.1.3 [Simple File I/O]を参照してください。 初期値: 1

sigterm_dumps_octave_core

編集

Section 16.1.3 [Simple File I/O]を参照してください。 初期値: 1

silent_functions

編集

Section 13.1 [Defining Functions]を参照してください。 初期値: 0

split_long_rows

編集

Section 4.1 [Matrices]を参照してください。 初期値: 1

struct_levels_to_print

編集

Chapter 6 [Data Structures]を参照してください。 初期値: 2

suppress_verbose_help_message

編集

Section 2.3 [Getting Help]を参照してください。 初期値: 1

warn_assign_as_truth_value

編集

Section 12.1 [The if Statement]を参照してください。 初期値: 1

warn_comma_in_global_decl

編集

Section 9.1 [Global Variables]を参照してください。 初期値: 1

warn_divide_by_zero

編集

Section 10.3 [Arithmetic Ops]を参照してください。 初期値: 1

warn_empty_list_elements

編集

Section 4.1.1 [Empty Matrices]を参照してください。 初期値: 0

warn_fortran_indexing

編集

Section 10.1 [Index Expressions]を参照してください。 初期値: 0

warn_function_name_clash

編集

Section 13.6 [Function Files]を参照してください。 初期値: 1

warn_imag_to_real

編集

Section 18.3 [Special Utility Matrices]を参照してください。 初期値: 0

warn_missing_semicolon

編集

Section 13.1 [Defining Functions]を参照してください。 初期値: 0

warn_neg_dim_as_zero

編集

Section 18.3 [Special Utility Matrices]を参照してください。 初期値: 0

warn_num_to_str

編集

Section 5.3 [String Conversions]を参照してください。 初期値: 1

warn_reload_forces_clear

編集

Section 13.8 [Dynamically Linked Functions]を参照してください。 初期値: 1

warn_resize_on_range_error

編集

Section 10.1 [Index Expressions]を参照してください。 初期値: 0

warn_separator_insert

編集

Section 4.1 [Matrices]を参照してください。 初期値: 0

warn_single_quote_string

編集

Section 5.3 [String Conversions]を参照してください。 初期値: 0

warn_str_to_num

編集

Section 5.3 [String Conversions]を参照してください。 初期値: 0

warn_undefined_return_values

編集

Section 13.2 [Multiple Return Values]を参照してください。 初期値: 0

warn_variable_switch_label

編集

Section 12.2 [The switch Statement]を参照してください。 初期値: 0

9.5 環境変数からの初期値 

編集

Octave は,以下の環境変数を,対応する組み込み変数に対する初期値にセットします。さらに,環 境変数からの値は,コマンドライン引数によって上書きされることになります。Section 2.1.1 [Command Line Options]を参照してください。

EDITOR

編集

Section 2.4.5[Commands For History]を参照してください。

組み込み変数: EDITOR

OCTAVE_EXEC_PATH

編集

Section 34.3 [Controlling Subprocesses]を参照してください。

組み込み変数: EXEC_PATH コマンドライン引数: --exec-path

OCTAVE_PATH

編集

Section 13.6 [Function Files]を参照してください。

組み込み変数: LOADPATH コマンドライン引数: --path

OCTAVE_INFO_FILE

編集

Section 2.3 [Getting Help]を参照してください。

組み込み変数: INFO_FILE コマンドライン引数: --info-file

OCTAVE_INFO_PROGRAM

編集

Section 2.3 [Getting Help]を参照してください。

組み込み変数: INFO_PROGRAM コマンドライン引数: --info-program

OCTAVE_HISTSIZE

編集

Section 2.4.5 [Commands For History]を参照してください。

組み込み変数: history_size

OCTAVE_HISTFILE

編集

Section 2.4.5 [Commands For History]を参照してください。

組み込み変数: history_file