Location of value in cell array
조회 수: 2 (최근 30일)
이전 댓글 표시
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.
댓글 수: 0
채택된 답변
Fangjun Jiang
2011년 11월 4일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!