Matlab 执行函数';s工作区是否复制变量输入?
我在基本工作区中定义了一个变量Matlab 执行函数';s工作区是否复制变量输入?,matlab,function,workspace,Matlab,Function,Workspace,我在基本工作区中定义了一个变量 a=一(10) 我想创建一个函数,输入向量vec1,并返回vec2: function vec2 = myfun(vec1) Operations with vec1 end 让我们做 b = myfun(a); 在myfun的工作区中,我们将有一个名为vec1的变量,该变量的值与a相同,但它不在基本工作区中 处于调试模式并使用 dbup; 我可以在base和myfun工作区中分别看到两个不同的变量a和vec1 myfun是否在两个不同的工作空间中复制变
a=一(10)代码>
我想创建一个函数,输入向量vec1
,并返回vec2
:
function vec2 = myfun(vec1)
Operations with vec1
end
让我们做
b = myfun(a);
在myfun
的工作区中,我们将有一个名为vec1
的变量,该变量的值与a
相同,但它不在基本工作区中
处于调试模式并使用
dbup;
我可以在base和myfun工作区中分别看到两个不同的变量a
和vec1
myfun
是否在两个不同的工作空间中复制变量a(从而使用更多内存)
如果不是这样,它是如何工作的?是指针为同一信息指定了两个不同的名称吗
提前感谢。MATLAB使用一种通常称为“写入时复制”的系统,以避免在函数工作区内复制输入参数,直到或除非您修改输入参数。如果不修改输入参数,MATLAB将避免复制。例如,在此代码中:
function y = functionOfLargeMatrix(x)
y = x(1);
MATLAB不会在大矩阵的functionOfLargeMatrix
的工作区中复制输入,因为该函数中没有更改x
。另一方面,如果调用此函数:
function y = functionOfLargeMatrix2(x)
x(2) = 2;
y = x(1);
然后在大矩阵x2的函数的工作区内修改x
,因此必须制作一份副本。不用担心。这是一个伟大、简单、准确的答案。干得好