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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab - 能够将一个结构的字段分解成几个较小的字段。相关的知识,希望对你有一定的参考价值。

谢谢您的支持。

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

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

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

谢谢您

enter image description here

答案

如果我对问题的理解正确的话,你希望当某个值超过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')

以上是关于Matlab - 能够将一个结构的字段分解成几个较小的字段。的主要内容,如果未能解决你的问题,请参考以下文章

二分之一网打尽

二分之一网打尽

iOS:将大型 XIB 重构为几个较小的 XIB 文件以提高速度

(java) 将一个自然数分解成几个质数的连乘积形式 举例 input:60 output:2*2*3*5

c++ 分解数2

整数分解为若干项之和