我有一个名为current_load
的1 x 118矩阵,我需要定期更新。该矩阵位于Matlab的主工作空间中(如下面的代码所示)。
current_loads = zeros(1, 118);
for col=1:118
current_loads(1,col)=10; %// Initially give all nodes a current load of 10
end
recursive_remove(current_loads); %calling function
此矩阵将传递给函数调用recursive_remove
(如下所示)。
function updater = recursive_remove( current_load )
current_load(1,3) = 2.6; %// This update can't be seen from main ??
%this function will be called recursively later
end
但无论我对函数中的current_load
矩阵做什么更新,它都不会更新,因为我不知道如何通过引用传递它。
我是Matlab的新手。如果你能举例说明如何处理这个
,我将不胜感激答案 0 :(得分:2)
编辑:“如何在Matlab中通过引用传递参数” 您可以通过引用
解决传递参数的问题您需要handle class
处理类
与其他对象共享引用的对象
这样,使用以下代码创建一个名为HandleObject.m的文件:
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
通过这种方式,您可以通过引用获得某种传递,并避免为您的程序获得大量副本。
答案 1 :(得分:0)
函数recursive_remove的输出尚未定义,因此您无法在其他任何地方使用输出。
在matlab中,您可以使用方括号定义函数的输出,如下所示。
function [ output1, output2 ] = recursive_remove( input1, input2 )
现在可以将输出传递到其他MATLAB docs - functions。
在上面的例子中调用上面的例子中的函数时,你可以像在第一段代码中那样调用它,你可以如下所示调用它:
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_remover