Matlab - 能够将一个结构的字段分解成几个较小的字段。

问题描述 投票:0回答:1

谢谢您的支持。

我有以下问题需要解决:我测量了一些温度,数值从来没有低于2,我已经做了几次测量。我在matlab上有一个结构的字段,它包含了一个大日志中的所有测量值(见附图)。我想根据数据中看到的条件,把这个日志分成更小的日志。在这种情况下,条件是 "每当温度超过3时,打破日志,并将这块数据放入一个新的字段"。

请你帮我解决这个问题好吗?

如果需要进一步解释说明这个问题,请告诉我。

谢谢您

enter image description here

arrays matlab sorting logging struct
1个回答
1
投票

如果我对问题的理解正确的话,你希望当某个值超过3时,将结构的一个字段打散,然后用下面的值创建一个新的字段,直到下一个3。

下面是一个例子。给定

s.Temperature = [1 2 3 4 5 2 3 4 5];

下面的代码。

indx = find(diff(s.Temperature > 3) == 1);
l = length(indx);

for i=1:l
    if i==l
        s = setfield(s,['new_field_', num2str(i)],s.Temperature(indx(i):end));
    else
        s = setfield(s,['new_field_', num2str(i)],s.Temperature(indx(i):indx(i+1) - 1));
    end
end

将生成。

s = 

  struct with fields:

    Temperature: [1 2 3 4 5 2 3 4 5]
    new_field_1: [3 4 5 2]
    new_field_2: [3 4 5]

当你完成后,你可以简单地删除该字段。Temperature:

rmfield(s,'Temperature')
© www.soinside.com 2019 - 2024. All rights reserved.