重複の可能性:
MATLAB でのグローバル変数の宣言
現在、私の matlab コードは、内部関数のない 1 つの大きなスクリプト ファイルになっています。コードを読みやすくしたり、コードを再利用したりするために、スクリプト内で関数を宣言したいと考えています。これ自体は、matlab では難しくありません。
例 1:
function main()
myfunc('goat');
end
function myfunc(x)
fprintf(x);
end
私の問題は、データの再ロードに時間を費やすことなく開発中にコードを再実行できるように、一度だけロードしたい大きなデータファイルがあることです。これは、内部関数のない 1 つの大きなスクリプトを使用する現在のフレームワークでは問題になりません。1 つの解決策は、2 つの matlab スクリプト ファイルを用意することです。1 つはデータをロードし、別のスクリプトで関数を呼び出すためのものです。
ただし、上記の例 1 では、真のグローバル変数宣言は機能せず、スクリプトを実行するたびに biig ファイルを強制的にロードする必要があります。私がやりたいことは、2つの例で示すことができます:
例 2:
% Global variable
if ~exist('data',var)
data = load biigdatafile.mat; %FAILS, outside function.
end
function main()
myfunc('goat');
end
function myfunc(x)
fprintf(x);
end
例 3:
function main()
% Global variable
if ~exist('data',var)
global data; % Is not really global after whole script is completed.
data = load biigdatafile.mat;
end
myfunc('goat');
end
function myfunc(x)
fprintf(x);
end
だから私の質問は、例 2 のように真のグローバル変数を宣言する方法です。ここでは、1 つのスクリプト内で関数を呼び出しながら、ワークスペースにとどまるためにデータを 1 回ロードしますか?