Удаление нескольких строк из всех полей данного массива структуры с помощью 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)