Location of value in cell array

3 visualizaciones (últimos 30 días)
Jared
Jared el 4 de Nov. de 2011
I have a 2 element cell array:
cell={x y}
x & y are both the same length. I am trying to compare each value in y against a set of user defined inputs, and delete it and its corresponding x if it is outside the range.
lowerbound=str2double(get(handles.min,'String'));
upperbound=str2double(get(handles.max,'String'));
for i=1:length(cell{2})
if cell{2}(i)<lowerbound || cell{2}(i)>upperbound
cell{1}(i)=[];
cell{2}(i)=[];
end
end
However I'm getting Index exceeds matrix dimensions error in the 4th line. I don't see why, but I assume I am misunderstanding on how to address each individal value.

Respuesta aceptada

Fangjun Jiang
Fangjun Jiang el 4 de Nov. de 2011
When you delete some of the elements using cell{1}(i)=[], the length of cell{1} reduces thus cause "Index exceeds matrix dimensions error" when i reaches the end.
Use logic index instead and no need to do the for-loop.
index=cell{2}<lowerbound | cell{2}>upperbound;
cell{1}(index)=[];
cell{2}(index)=[];
  5 comentarios
Jan
Jan el 4 de Nov. de 2011
The || operator needs scalar inputs. I'd prefer "or()" here.
Fangjun Jiang
Fangjun Jiang el 4 de Nov. de 2011
@Jan, you are right. My answer is updated.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by