将异构变量数组转换为结构的函数(保留名称)
Function to convert array of heterogeneous variables to structure (preserving name)
我想编写一个函数来转换 变量 个变量(在下面的示例中,数组 sc
、矩阵 A
、 number 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;
所以输出是:
data =
struct with fields:
sc: [1 2 1 0.5000 0.0100 0.0300]
A: [2×4 double]
T: 2
对于 变量 数量的异构参数。
您可以使用函数inputname
, in combination with 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
注意函数在提供'nameless variables'时会报错,例如:
data = dataStructifier(sc, A, T, ones(10))
我想编写一个函数来转换 变量 个变量(在下面的示例中,数组 sc
、矩阵 A
、 number 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;
所以输出是:
data =
struct with fields:
sc: [1 2 1 0.5000 0.0100 0.0300] A: [2×4 double] T: 2
对于 变量 数量的异构参数。
您可以使用函数inputname
, in combination with 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
注意函数在提供'nameless variables'时会报错,例如:
data = dataStructifier(sc, A, T, ones(10))