0
我想拼接参数列表以传递给函数。对于矢量我知道我可以使用num2cell
并用大括号(请参阅this question)调用单元格,但在我的情况下,我想要拼接的列表最初有struct
s,我需要访问它们的一个属性。例如:将函数调用的参数列表转换为参数 - Matlab
austen = struct('ids', ids, 'matrix', matrix);
% ... more structs defined here
authors = [austen, dickens, melville, twain];
% the function call I want to do is something like
tmp = num2cell(authors);
% myFunction defined using varargin
[a,b] = myFunction(tmp{:}.ids);
上面的例子不工作,因为预期Matlab的从大括号ONE输出和它的接收如图4所示,一个用于每个作者。我也试图定义我的参数列表作为首位
indexes = {austen.ids, dickens.ids, melville.ids, twain.ids};
[a,b] = myFunction(indexes{:});
但这个问题是myFunction
走的是矢量ids
的联合和交集,我得到以下错误的单元阵列:
Error using vertcat
The following error occurred converting from double to struct:
Conversion to struct from double is not possible.
Error in union>unionR2012a (line 192)
c = unique([a;b],order);
Error in union (line 89)
[varargout{1:nlhs}] = unionR2012a(varargin{:});
这样做的正确方法是什么?问题是我会有数十位作者,我不想通过手动将他们中的任何一个传递给myFunction
。
能给你更多关于'id和'matrix'的信息,这样你的代码就可以重现吗?另外,由于'authors'是一个结构体,你有没有考虑过使用'struct2cell'而不是'num2cell'? – kedarps
对不起,'ids'是整数的(列)向量,'matrix'是一个实数矩阵。感谢您指点我正确的方向! 'struct2cell'完成任务! – rodrigolece
太棒了,很高兴我能帮到你! – kedarps