【问题标题】:Passing A Variable Number of Arguments into a Function将可变数量的参数传递给函数
【发布时间】:2017-12-10 03:54:57
【问题描述】:

在 Matlab 中,我有一个可变长度的值单元格:

C={A1,...,An}

我应该如何将这些值传递和分配到能够接收可变数量参数的函数中?

f(A1,...,An)

如果不可能的话,我应该如何修改这个函数的开头来使它工作?

【问题讨论】:

    标签: matlab function arguments


    【解决方案1】:

    您需要通过花括号索引将元胞数组转换为comma-separated list,即使用C{:}

    reshape 函数示例:

    >> C = {ones(3,4), 2, 2, 3};
    >> y = reshape(C{:});
    >> size(y) % check
    ans =
         2     2     3
    

    【讨论】:

    • 我试过(:)....我正要为这么棘手的细节写一个完整的改变!!!
    【解决方案2】:

    这正是“varargin”为您所做的。读入多个变量,例如f(a,b,c),并将它们存储在一个元胞数组中。

    然后你可以选择这些“快速而肮脏”的处理方法之一:

    function asdf(varargin)
      yourarguments=[varargin{:}]; % if all numerical
      yourargumentscontain=contains(varargin,'asdf'); %if strings contained
      all_processed_args=cellfun(@(x) whateveryouwant_function(x), varargin); %for older versions of matlab
    end
    

    更多这里的文档:https://ch.mathworks.com/help/matlab/matlab_prog/parse-function-inputs.html

    【讨论】:

    • 反之,用于从函数中读取,而不是用于输入到函数中。
    • 对不起,答案假设您正在使用 varargin。我想情况并非如此。
    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2015-01-05
    • 2019-01-17
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2010-11-28
    • 2020-10-30
    相关资源
    最近更新 更多