1

我需要帮助,如何从 matlab 中的函数返回矩阵?我有一个零矩阵(大小 NxN)。我将矩阵发送到某个函数以更新她。如何返回更新后的矩阵?

在代码中:

matrix = zeros(size); %put zeros
updateMatrix(radius,x0,y0,matrix);%call to function

function updateMatrix(radius,x0,y0,matrix)
    update the matrix
end

continue the prog with the updated matrix

我只需要返回更新后的矩阵,我不会更改其他变量。

我试图这样做:

matrix = zeros(size); %put zeros
matrix=updateMatrix(radius,x0,y0,matrix);%call to function

function [matrix]=updateMatrix(radius,x0,y0,matrix)
    update the matrix
end

continue the prog with the updated matrix

但它不起作用。

谢谢!

4

2 回答 2

5

Matlab 不支持指针,除非指定,否则不能更改输入。尝试这样的事情。

matrix=updateMatrix(radius,x0,y0,matrix)    

function matrix=updateMatrix(radius,x0,y0,matrix)
    %update the matrix
end
于 2012-11-14T17:16:52.920 回答
2

您不能像在 C 或 C++(或任何数量的其他语言)中那样传递指向 MATLAB 函数的指针或引用,并让它对数据进行就地操作。但是,MATLAB 优化器应该能够识别意图在函数内就地改变数据的情况。这种优化是几年前添加的。

把你的函数写成

function matrix = updateMatrix( radius, x0, y0, matrix )
  % do whatever to the matrix variable
end

称它为

m = zeros( row, col );
m = updateMatrix( r, x0, y0, m );

诀窍是保持输入和输出变量的名称相同,以便优化器意识到您希望就地改变数据。

于 2012-11-14T17:26:11.510 回答