在MATLAB中,如何方便地为函数提供许多参数?

时间:2010-12-08 02:22:24

标签: function matlab input arguments

我有一个MATLAB函数myfun(v1,v2,v3,v4,v5,v6)和一个30x6矩阵A。调用该函数的方法是将A的每一列作为单独的输入参数传递:

myfun(A(:,1),A(:,2),A(:,3),A(:,4),A(:,5),A(:,6))

只是想知道在没有明确写出这么多次A(:,*)的情况下是否有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:5)

您可以先使用函数NUM2CELLA的每一列放在单元格数组的单元格中,然后使用{:}将单元格数组内容作为comma-separated list传递语法:

B = num2cell(A,1);
myfun(B{:});

答案 1 :(得分:2)

重写你的函数以接受这两个约定:

function [] = myfun(v1,v2,v3,v4,v5,v6)
    if nargin==1
        v2 = v1(:,2);
        v3 = v1(:,3);
        v4 = v1(:,4);
        v5 = v1(:,5);
        v6 = v1(:,6);
        v1 = v1(:,1);
    end

    %# use v1,v2,v3,v4,v5,v6
    %# ...
end

现在你可以同时打电话:

myfun(A(:,1),A(:,2),A(:,3),A(:,4),A(:,5),A(:,6))
myfun(A)

通常你会做更多的验证来测试正确数量的参数......