我是Matlab的初学者,在网上学习了以下问题,但在解决它时遇到了麻烦。我有一个名为current_load
的1x20矩阵,需要定期更新。该矩阵位于Matlab主工作区中(如下面的代码所示)。
current_loads = zeros(1, 20);
for col=1:20
current_loads(1,col)=10; %// Initially give all nodes a current value of 10
end
Object = HandleObject(current_load);%To pass by reference
recursive_remove(Object, 0);
为了通过引用传递
current_load
,我创建了以下类HandleObject.m。classdef HandleObject < handle
properties
Object=[];
end
methods
function obj=HandleObject(receivedObject)
obj.Object=receivedObject;
end
end
end
这个矩阵将被传递给一个函数调用recursive_remove
(如下所示)。
function recursive_remove( current_load, val )
current_load.object = new matrix;
if(val<10)
current_load.object(1,3) = 2+val; %Not the correct way of using current_load ??
end
recursive_remove( current_load, current_load.object (1,3) )
end
这里的意图是要修改这个函数中的current_load
变量,然后我可以从主函数中看到这些相同的更改。但是这段代码不起作用,因为我不知道如何通过引用传递。我需要通过引用传递,因为我正在递归调用此函数,而没有返回到主函数,以便在调用者处覆盖其变量。如果可能,请通过示例说明。
current_load = recursive_remove( current_load, val );
有什么问题吗? - ThP