Matlab:如何绘制来自n个结构的数据

时间:2015-04-28 11:00:53

标签: matlab dynamic structure field

我正在开发一个具有以下结构的matlab脚本:Parameters1,Parameters2,Parameters3等,直到ParametersN。我想访问每个结构中的两个字段(例如x和y),以便我可以绘制数据。我想覆盖每个参数的x和y数据。

我目前遇到的问题是我不知道如何访问x和y字段。我可以使用strcat获取名称'Parameters1','Parameters2'等但不知道如何使用该字符串来访问该字段。我尝试使用whos('Parameters *')来获取结构名称,但还有其他问题。

text='Parameters'
for z=1:n
    S(z)=strcat(text,num2str(z))
    x=S{z}.MDT{iDLC}.Time                % problematic line
    y=S{z}.MDT{iDLC}.RotorSpeed          % problematic line
end

谢谢=)

3 个答案:

答案 0 :(得分:1)

是获取字段名称还是访问问题字段?

eval命令可用于访问字段,以下内容可以eval('Parameters1.Time')

eval([strcat(text, num2str(z)) '.Time'])

让参数像数组一样更好,例如

Parameters(1) = struct("x", 1, "y", 2);
Parameters(2) = struct("x", 2, "y", 4);

然后你发现你不需要strcat,而是可以访问参数(z)。

答案 1 :(得分:0)

您是否尝试过getfieldfieldnames。试试

help getfield

help fieldnames

答案 2 :(得分:0)

以下是您的代码应该是这样的:

hold all
for t=1:numel(Parameters)
    plot(Parameters(t).x,Parameters(t).y)
end

请注意,这意味着您使用Parameters(t)而不是Parameterst,这极大地简化了事情并使其更有效。