Index exceeds matrix dimensions.

hi,
I have used this code here:
for i=1:length(data8(:,1))
if(data8(i,8)>1.1)
data8(i,:) = [];
end
if(data8(i,8)<0.9)
data8(i,:) = [];
end
end
where data 8 is a matrix with 8 columns, and I get this error message:
Index exceeds matrix dimensions.
Error in construct_data (line 43) if(data8(i,8)>1.1)
has anybody an idea why this can happen?

 채택된 답변

Cedric
Cedric 2013년 4월 10일
편집: Cedric 2013년 4월 10일

0 개 추천

length(data8(:,1))
is evaluated only once at the beginning of the FOR loop. It is e.g. 10. Then you remove rows from data8 , whose size therefore decreases (9 rows, 8 rows, ..). At one point the loop index (that is still incremented until it hits 10) becomes larger than the remaining number of rows in data8.

댓글 수: 3

Locks
Locks 2013년 4월 10일
is there something I can do that it's dynamic and still running?
Cedric
Cedric 2013년 4월 10일
편집: Cedric 2013년 4월 10일
Several ways, one is:
i = 0 ;
while i < size(data8, 1)
i = i + 1 ;
% .. whatever you have to do.
end
Locks
Locks 2013년 4월 10일
great, thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

질문:

2013년 4월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by