将异构变量数组转换为结构的函数(保留名称)

时间:2019-05-08 11:50:22

标签: arrays matlab structure data-conversion

我想编写一个函数,该函数可以转换数量为 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;

表示变量个异构参数的数量。

1 个答案:

答案 0 :(得分:6)

您可以将功能inputnamedynamic 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))