Matlab 如何通过引用传递矩阵或获取函数的返回值
我有一个名为Matlab 如何通过引用传递矩阵或获取函数的返回值,matlab,matrix,Matlab,Matrix,我有一个名为current\u load的1 x 118矩阵,需要定期更新。该矩阵位于Matlab的主工作区中(如下面的代码所示) 该矩阵将被传递给函数调用recursive\u remove(如下所示) 但是无论我从函数中对这个当前加载矩阵做什么更新,它都不会得到更新,因为我不知道如何通过引用传递它 我对Matlab是新手。如果您能举例说明如何处理此问题,我将不胜感激。函数recursive_remove的输出尚未定义,因此您的输出不能用于其他任何地方 在matlab中,使用方括号定义函数的输
current\u load
的1 x 118矩阵,需要定期更新。该矩阵位于Matlab的主工作区中(如下面的代码所示)
该矩阵将被传递给函数调用recursive\u remove
(如下所示)
但是无论我从函数中对这个当前加载
矩阵做什么更新,它都不会得到更新,因为我不知道如何通过引用传递它
我对Matlab是新手。如果您能举例说明如何处理此问题,我将不胜感激。函数recursive_remove的输出尚未定义,因此您的输出不能用于其他任何地方 在matlab中,使用方括号定义函数的输出,如下所示
函数[output1,output2]=递归删除(input1,input2)
现在可以将输出传递到其他服务器
当在不同的函数中调用上述示例中的函数时,如您在第一段代码中所做的那样,您将调用它,如下所示:
current_loads = zeros(1, 118);
for col=1:118
current_loads(1,col)=10; %Initially give all nodes a current load of 10
end
[ output1, output2 ] = recursive_remove( input1, input2 ); %calling function
使用此语法,您可以获取output1
并在下一个函数的输入中调用它recursive\u remover
编辑:“如何在Matlab中通过引用传递参数”
您可以通过引用传递参数来解决问题
你需要一个
处理类
与其他对象共享引用的对象
也就是说,使用以下代码创建一个名为HandleObject.m的文件:
classdef HandleObject < handle
properties
Object=[];
end
methods
function obj=HandleObject(receivedObject)
obj.Object=receivedObject;
end
end
end
在你的职能范围内
function yourFunction(myObject)
myObject.object = new matrix;
end
有了它,您可以实现某种形式的“按引用传递”,避免程序中出现大量副本。非常感谢您向我展示示例代码。现在已经很清楚了,只需要清楚这个答案是通过值传递的,而不是通过引用传递的。谢谢,实际上我总是混淆这两个,刚刚发现这个,它解释得很好,我怀疑我现在会忘记它。。。当我看到问题的标题时,我就在想这个问题,但最后我发现它实际上并不是问题。回答得好!为什么不呢?他想改变函数中矩阵的值。公平地说,OP在评论中暗示这就是他想要的。但据我所知,问题的真正标题应该更像“如何从函数返回结果”。这与如何将参数传递给函数关系不大,而是与如何返回参数有关。无论如何,我认为你的答案应该留下来,但为了让它现在更容易理解,可能你应该编辑它,并在上面添加你最初回答的“如何在Matlab中通过引用传递参数”问题的真正标题应该是“请解决我的问题”,任何让guy代码工作的人都可以。无论如何,谢谢我将编辑我的问题
classdef HandleObject < handle
properties
Object=[];
end
methods
function obj=HandleObject(receivedObject)
obj.Object=receivedObject;
end
end
end
Object = HandleObject(your matrix)
yourFunction(Object)
function yourFunction(myObject)
myObject.object = new matrix;
end