2015-11-22 4 views
1

Я пытаюсь удалить все структуры из вектора, у которого есть поле с некоторым значением, я попробовал это, но получил «Ошибка с использованием == Слишком много входных аргументов».Ошибка при попытке удалить структуру из вектора

s1 = struct('number', 2, 'value', 3); 
s2 = struct('number', 3, 'value', 4); 
s3 = struct('number', 3, 'value', 5); 

aT = [s1, s2, s3]; 
aT(aT.number == 3) = []; 

Я бы хотел, чтобы aT имел только [s1], любая помощь была бы потрясающей! благодаря

ответ

0

Используйте logical indexing на массив структур вместо:

idx = (cat(1,aT.number) == 3); 
result = aT(idx); 

Применение cat происходит потому, что операция доступа поле STRUCT выводит вид запятую список, который должен быть сцеплены к вектору ,

+0

Спасибо большое! Как я могу отметить его как разрешенный? –

+0

@MarceloBircheFerri рад, что я мог бы помочь! Я считаю, что вы сделали именно это, выбрав ответ как «принятый». – mikkola