考虑到我们有一个名为 A 的巨大矩阵,我们将其传递给函数 func(A),其中 func
我进行了一组计算,例如:
func(A):
B=A;
%% a lot of processes will happen on B here
return B;
end
事实是,一旦我将 A 传递给 B,我在 Matlab session 中就不再与 A 有任何关系,因此它占用了不必要的内存空间。是否可以在调用 func
的脚本范围内删除它的实例?
最佳答案
使用 evalin使用选项 caller
您可以评估表达式 clear A
:
function A = func(A)
evalin('caller', 'clear A')
A(1) = 5;
end
然而我们通常不知道输入变量的名称所以我们可以使用inputname获取工作区变量的实际名称:
function A = func(A)
name = inputname(1);
if ~isempty(name)
evalin('caller', ['clear ' name])
end
A(1)=4;
end
1.这里的inputname(1)
表示第一个参数的实际名称。
2.直接使用A
,因为如果将A
复制到B
中,函数作用域将有两个A
.
关于matlab - 在将其本地副本传递给 Matlab 中的函数后删除一个巨大的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48414849/