【发布时间】:2017-12-10 03:54:57
【问题描述】:
在 Matlab 中,我有一个可变长度的值单元格:
C={A1,...,An}
我应该如何将这些值传递和分配到能够接收可变数量参数的函数中?
f(A1,...,An)
如果不可能的话,我应该如何修改这个函数的开头来使它工作?
【问题讨论】:
在 Matlab 中,我有一个可变长度的值单元格:
C={A1,...,An}
我应该如何将这些值传递和分配到能够接收可变数量参数的函数中?
f(A1,...,An)
如果不可能的话,我应该如何修改这个函数的开头来使它工作?
【问题讨论】:
您需要通过花括号索引将元胞数组转换为comma-separated list,即使用C{:}。
reshape 函数示例:
>> C = {ones(3,4), 2, 2, 3};
>> y = reshape(C{:});
>> size(y) % check
ans =
2 2 3
【讨论】:
(:)....我正要为这么棘手的细节写一个完整的改变!!!
这正是“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
【讨论】: