可能重复:
在 MATLAB 中声明全局变量
目前我的 matlab 代码在一个没有内部函数的大脚本文件中。我想在我的脚本中声明函数,以使我的代码更具可读性和重用代码等。这在 matlab 中本身并不难,例如
示例 1:
function main()
myfunc('goat');
end
function myfunc(x)
fprintf(x);
end
我的问题是我有一个 biig 数据文件,我只想加载一次,这样我就可以在开发过程中重新运行我的代码,而无需花费时间重新加载数据。在我当前的框架中,这不是问题,它有一个没有内部函数的大脚本。一种解决方案是拥有两个 matlab 脚本文件。一个用于加载数据,然后在另一个脚本中调用函数。
但是在上面的示例 1 中,真正的全局变量声明将不起作用,并且每次运行脚本时我都被迫加载 biig 文件。我想做的可以用两个例子来展示:
示例 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 所示,我在其中加载一次数据以留在工作区中,同时在一个脚本中调用我的函数?