为了在不同的场景中测试算法,需要迭代地调用matlab函数alg.m.
alg.m中的瓶颈是这样的:
load large5Dmatrix.mat
small2Dmatrix=large5Dmatrix(:,:,i,j,k) % i,j and k change at every call of alg.m
clear large5Dmatrix
Run Code Online (Sandbox Code Playgroud)
为了加速我的测试,我想large5Dmatrix只在第一次调用alg.m时加载,并且对将来的调用有效,可能只在alg.m的范围内
有没有办法在matlab中将其设置large5Dmatrix 为全局?
您能想到在alg.m中使用这个大的常量值矩阵的更好方法吗?
Gun*_*uyf 10
您可以使用persistent作为静态局部变量:
function myfun(myargs)
persistent large5Dmatrix
if isempty(large5Dmatrix)
load large5Dmatrix.mat;
end
small2Dmatrix=large5Dmatrix(:,:,i,j,k) % i,j and k change at every call of alg.m
% ...
end
Run Code Online (Sandbox Code Playgroud)
但由于你没有改变large5Dmatrix,@高性能标记答案更适合,没有计算含义.除非你真的,真的不想large5Dmatrix在调用者的范围内.