Matlab:如何从n个结构绘制数据

Matlab:如何从n个结构绘制数据,matlab,dynamic,structure,field,Matlab,Dynamic,Structure,Field,我正在编写一个具有以下结构的matlab脚本:Parameters1、Parameters2、Parameters3等,直到ParametersN。我想访问每个结构中的两个字段(例如x和y),以便绘制数据。我想覆盖每个参数的x和y数据 目前的问题是我不知道如何访问x和y字段。我可以使用strcat获取名称“parameters s1”、“parameters s2”等,但不知道如何使用字符串访问字段。我曾尝试使用whos('Parameters*)来获取结构名称,但存在其他问题 text='Pa

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

目前的问题是我不知道如何访问x和y字段。我可以使用strcat获取名称“parameters s1”、“parameters s2”等,但不知道如何使用字符串访问字段。我曾尝试使用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

谢谢=)

您尝试过
getfield
fieldnames
了吗。试一试

help getfield


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

eval命令可用于访问字段,以下操作将执行
eval('parameters 1.Time')

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

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

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

下面是您的代码可能的样子:

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

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

我同意。我尝试了
参数1。('x')
,但在使用
strcat
设置参数1时,它无法工作。我使用的是倍频程,所以Matlab可能可以工作。因此,我求助于
eval
。大多数人投票赞成给出的建议:我强调像
Parameters 1
这样的结构应该避免,而应该使用
Parameters(1)
!正如在这个问题中所看到的,如果在变量名中加入枚举来滥用变量名,那么简单地访问数据已经变得很痛苦。模拟数据存储在一个名为Parameters的结构中,为了区分不同的模拟,我将它们重命名为Parameters 1、2、3等等……我知道这是一种非常丑陋的方式!我不知道你可以使用一系列的结构,虽然我已经修改了一些东西,这要容易得多。谢谢,你们真是太棒了!!我要强调的是,应该避免像
Parameters 1
这样的构造,而应该使用
Parameters(1)
!正如在这个问题中所看到的,如果在变量名中加入枚举来滥用变量名,那么简单地访问数据已经变得很痛苦了。
Parameters(1) = struct("x", 1, "y", 2);
Parameters(2) = struct("x", 2, "y", 4);
hold all
for t=1:numel(Parameters)
    plot(Parameters(t).x,Parameters(t).y)
end