我想编写一个函数,该函数可以转换数量为 variable 的变量(在下面的示例中,数组sc
,矩阵A
,数字{{1} })包含它们的结构。相应的结构标签应为变量本身的名称。请参见下面的示例:
T
我希望函数执行此操作:
sc=[1 2 1 0.5 0.01 0.03];
A=[1,2,3,4;1,2,3,4];
T=2;
因此输出为:
数据=
带有字段的结构:
data.sc=sc; data.A=A; data.T=T;
表示变量个异构参数的数量。
答案 0 :(得分:6)
您可以将功能inputname
与dynamic field names结合使用。
function outStruct = dataStructifier(varargin)
outStruct = struct;
for k = 1:nargin
outStruct.(inputname(k)) = varargin{k};
end
end
结果是:
sc=[1 2 1 0.5 0.01 0.03];
A=[1,2,3,4;1,2,3,4];
T=2;
data = dataStructifier(sc, A, T)
data =
struct with fields:
sc: [1 2 1 0.5000 0.0100 0.0300]
A: [2×4 double]
T: 2
请注意,该函数在提供“无名变量”时将导致错误,例如:
data = dataStructifier(sc, A, T, ones(10))