如何将一组未知数量的参数传递给MATLAB中的函数?

时间:2012-10-31 20:29:40

标签: arrays function matlab arguments

当你有一个带有可变数量参数的函数(比如ndgrid)时,如何将任意参数列表传递给该函数?

例如我想制作它,以便有时我将两个向量传递给ndgrid并输出两个矩阵,即

[X1,X2] = ndgrid(x1,x2);

但有时我可能会有更多的X,所以我想要

[X1,X2,X3,X4] = ndgrid(x1,x2,x3,x4)
  1. 我是否可以使用任何类型的结构来存储未知数量的参数列表,然后将该列表提供给函数?而且,
  2. 当你不知道会有多少输出时,有没有办法检索函数的所有输出?

3 个答案:

答案 0 :(得分:6)

要将可变数量的输入传递给现有函数,请使用带扩展的单元格数组,如下所示:

x = 1:10;
y = randn(size(x));
plotArguments = {'color' 'red' 'linestyle' '-'};
plot(x, y, plotArguments{:});

plotArguments = {1:10 randn(1,10)  'color' 'red' 'linestyle' '-'};
plot(plotArguments{:});

您可以使用相同的技巧来接收多个输出。唯一困难的部分是记住正确的符号。

numArgumentsToAccept = 2;
[results{1:numArgumentsToAccept }] = max(randn(100,1));

答案 1 :(得分:5)

使用vararginnarginvarargoutnargout,您可以轻松定义变量参数/输出函数。请参阅varargin页面的附加MATLAB文档链接。其他的链接在底部:

http://www.mathworks.com/help/matlab/ref/varargin.html

编辑:顺便说一下,不是为了自己的号角,但它似乎是按照我在“快速而肮脏”的评论中所建议的那样实施的呵呵

答案 2 :(得分:0)

一个将所有参数作为输出返回的函数:

function varargout = ndgrid(varargin)    
    varargout = varargin;
return