Массив ячеек MATLAB - странное поведение при поиске в массиве ячеек

У меня есть массив ячеек в MATLAB, который ведет себя довольно странно. У меня есть 104 однострочных вектора, которые я сохранил в виде ячеек, от 80 до 344 элементов. В результате у меня есть массив ячеек 104 x 344, называемый z. Каждый элемент имеет одно числовое значение. Я пытаюсь найти положение всех ячеек в этом массиве, которые лежат между определенными значениями, скажем, 524 и 528. Для этого я использовал следующее;

index = find([z{:}] >= 524 & [zp{:}] <= 528 )

Это возвращает список позиций индекса, который изначально кажется разумным, но, что любопытно, когда я их оцениваю, я получаю очень странное поведение; я попробую

z{index}

и он выдает ряд значений в этих позициях, но не все из них находятся между 524 и 528; некоторые значительно выше или ниже этих значений. Другие по-прежнему возвращают [], массив 0 x 0. Возможно, я использую find неправильно для такого сложного массива ячеек, но поведение определенно не такое, как я ожидал. Есть идеи?


person DRG    schedule 12.11.2014    source источник
comment
Можете ли вы сказать нам, что такое zp?   -  person Cape Code    schedule 12.11.2014
comment
Извините, это должно быть z, а не zp!   -  person DRG    schedule 13.11.2014


Ответы (1)


Вы не можете использовать индексы, вычисленные из массива [z{:}] на z, если он содержит пустые значения. При выполнении [z{:}] пустые значения удаляются. Вам нужно сохранить [z{:}] в другой переменной и проиндексировать ее.

y = [z{:}];
index = find(y >= 524 & y <= 528 )
y(index)
person Navan    schedule 12.11.2014
comment
Работал отлично. Спасибо! - person DRG; 13.11.2014