Matlab - Возможность разбить поле структуры на несколько меньших полей - PullRequest
0 голосов
/ 22 апреля 2020

Спасибо за вашу поддержку.

У меня есть следующая проблема, которую нужно решить: я измерил некоторые температуры. значения никогда не ниже 2, и я сделал несколько измерений. У меня есть поле структуры на Matlab, которая содержит все измерения в одном большом журнале (см. Рисунок в приложении). Я хотел бы разбить этот журнал на более мелкие, в соответствии с условием, указанным в данных. В этом случае условие «каждый раз, когда температура превышает 3, прерывайте журнал и берите этот кусок данных и помещайте его в новое поле».

Не могли бы вы помочь мне в этом вопросе?

Пожалуйста, дайте мне знать, если вам нужны дополнительные объяснения для выяснения вопроса.

спасибо.

enter image description here

1 Ответ

1 голос
/ 22 апреля 2020

Если я правильно понимаю проблему, вы sh захотите разбить поле структуры, когда определенное значение превысит три, и создадите новое поле со следующими значениями вплоть до следующих трех.

Вот пример. С учетом

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...