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