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