【问题标题】:In MATLAB, how can I conveniently supply many arguments to a function?在 MATLAB 中,如何方便地为函数提供许多参数?
【发布时间】:2010-12-08 02:22:23
【问题描述】:

我有一个 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(:,*)

【问题讨论】:

  • 你怎么会这样路过?这个函数是你写的还是某种约束?

标签: function matlab input arguments


【解决方案1】:

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

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

【讨论】:

    【解决方案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)
    

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

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多