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

Matlab: How to plot data from n number of structures

我正在编写具有以下结构的 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

谢谢=)

你试过getfieldfieldnames了吗?尝试

help getfield

help fieldnames

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

可以使用 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,而是可以访问 Parameters(z)。

您的代码可能如下所示:

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

请注意,这意味着您使用 Parameters(t) 而不是 Parameterst,这大大简化了事情并提高了效率。