我在Matlab工作,使用blockproc处理图像并使用NNMF将其分解为两个因子矩阵。我的问题是,如果我将一个变量传递给一个函数并修改它,那么这个值会在函数
之外修改例如
function R = addOne (value, value2)
value2 = value2 + 1;
R = value + 1;
end
例如,如果我调用上面的函数,则只返回值+ 1作为返回值。如果我访问我传入的变量value2它也会增加吗?
我问这个是因为blockproc只允许返回1个矩阵,但我需要修改两个矩阵。
答案 0 :(得分:2)
通常,Matlab按值传递变量,而不按引用传递 (另请参阅here)。这意味着传递给函数的变量基本上是原始工作空间中变量的独立副本。请注意,handle objects是个例外,但它们无法解决您的问题。
要解决您的问题,您可以沿第三维度连接两个输出,以便输出out(:,:,1)
的第一个平面对应于第一个因子矩阵,输出的第二个平面{{1} }对应于第二个因子矩阵。