varargin varargout功能

时间:2017-01-16 16:07:15

标签: matlab matrix

我有一个简单的任务要在MATLAB中使用.bashrc / varargin作为矩阵。

我必须返回具有相同行和列编号的乘法元素的结果,如下所示:

like this

out等等。

我写了一些代码,但它只返回第一个矩阵的结果。乘法是有效的,因为我在乘法后使用tab(1,1) * tab(2,2)进行了检查。

这是我的代码,如何更改它以返回所有矩阵的结果?

disp(result)

2 个答案:

答案 0 :(得分:1)

不是您问题的答案,但您的功能可以重写为一行:

function varargout = test2(varargin) 

    varargout = cellfun(@(x) prod(diag(x)), ...
                        varargin,...
                        'UniformOutput', false);

end

你可以(最初)使用它作为一个功能来验证你自己的功能,并且(稍后)通过弄清楚它是如何工作来从中学到很多东西。

答案 1 :(得分:0)

返回的参数数量将由您调用函数的方式定义。例如,如果你写了:

a = test(x, y, z);

只返回第一个输出参数。相比之下,

[a, b] = test(x,y,z);

将返回第一个和第二个输出。如果您只想返回一个包含结果的单元格数组,请将输出参数命名为varargout之外的其他内容,最后只输出一个输出,每个输入的结果都在单元格中。