メインコンテンツ

global

変数のグローバルとしての宣言

説明

メモ

グローバル変数は非効率的であり、エラーの診断が難しくなります。代わりに、入力変数をもつ関数を使用してください。詳細については、データの不要なコピーの回避を参照してください。

global var1 ... varN は、指定された変数をグローバルなスコープとして宣言します。

通常、MATLAB® 関数は、自身のローカル変数をもち、他の関数の変数やベース ワークスペースの変数とは区別されます。しかし、いくつかの関数すべてが特定の変数名を global として宣言した場合、それらすべてがその変数の 1 つのコピーを共有します。変数の値をある関数内で変更すると、その値はその変数を global として宣言したすべての関数で参照されます。

global ステートメントをはじめて実行したときにグローバル変数が存在しない場合、グローバル変数は空の 0x0 の行列に初期化されます。

グローバル変数と同じ名前をもつ変数が現在のワークスペースに既に存在する場合、MATLAB は警告メッセージを表示し、その変数の値とスコープをグローバル変数と一致するように変更します。

すべて折りたたむ

現在の作業フォルダー内で、グローバル変数に値を設定する関数を作成します。

function setGlobalx(val)
global x
x = val;

現在の作業フォルダー内で、グローバル変数の値を返す関数を作成します。これら 2 つの関数は個別の関数ワークスペースをもちますが、どちらもグローバル変数にアクセスできます。

function r = getGlobalx
global x
r = x;

グローバル変数 x に値を設定し、別のワークスペースからその値を取得します。

setGlobalx(1138)
r = getGlobalx
r =

        1138

前の例で定義した関数を使用して、グローバル変数に値を代入します。

clear all
setGlobalx(42)

グローバル変数 x の値を表示します。変数がグローバルであるにもかかわらず、コマンド ラインではアクセスできません。

x
Undefined function or variable 'x'.

コマンド ラインで x をグローバル変数として宣言し、その値を表示します。

global x
x
x =

    42

x の値を変更し、前の例で定義した関数を使用して別のワークスペースからグローバル変数の値を返します。

x = 1701;
r = getGlobalx
r =

        1701

ヒント

  • グローバル変数をすべてのワークスペースから消去するには、clear global variable を使用します。

  • グローバル変数を現在のワークスペースから消去するが、他のワークスペースでは消去しない場合、clear variable を使用します。

  • グローバル変数には、ベース ワークスペースや関数ワークスペースとは別に専用のワークスペースがあります。グローバル変数の使用は非効率的です。MATLAB はメモリの最適化を関数の入力変数に適用しますが、グローバル変数には適用しません。詳細については、データの不要なコピーの回避を参照してください。

    また、グローバル変数には顕著なリスクが伴います。グローバル変数は任意の関数によってアクセスし更新することができます。その変数を使用する他の関数によって、予期しない結果が返される可能性があります。以下に例を示します。

    • "新しい" グローバル変数に誤って既存のグローバル変数と同じ名前を付けてしまうと、ある関数で使用する値が別の関数で上書きされる可能性があります。このエラーは診断が困難です。

    • 複数の関数でグローバル変数が変更される場合、それらの関数を異なる順序で呼び出すと、異なる結果が生じる可能性があります。

    グローバル変数はなるべく慎重に使用してください。変数とそのワークスペースの詳細については、ワークスペース間でのデータの共有ページの「グローバル変数」サブセクションを参照してください。

拡張機能

すべて展開する

バージョン履歴

R2006a より前に導入