Удаление нескольких строк из всех полей данного массива структуры с помощью Matlab

Я работаю над структурой с 12 полями, каждое из которых состоит из двойного 1350x1. Я хочу удалить все строки всех полей, учитывая условие, касающееся одного из этих полей, и создать новую структуру, все еще 12 полей, но только 1150 строк.

Я не против изменения индекса, так как одно из этих полей является полем "Время" для индексации других.

Чтобы прояснить, моя структура называется sens, а поля являются sens(1).Time, sens(1).Temp, sens(1).Humidity и так далее. Я хочу найти значение в sens (1).Time, определить его как пороговое значение и удалить все строки, меньшие, чем это значение, во всех полях.

Я знаю, что это возможно, просматривая все имена полей, но искал более быстрый путь, так как имена полей и / или структуры меняются.

Спасибо.

1 ответ

Решение

Проверьте функцию structfun из matlab, и это должно решить вашу проблему. У вас есть несколько примеров, которые могут помочь вам с тем, что вы хотите, но в итоге это должно выглядеть примерно так:

% A is your struct
% cond is the indexes of the rows you want to keep
A_clean= structfun(@(x) x(cond), A, 'UniformOutput', false)
Другие вопросы по тегам