How can I fix "Index in position 2 exceeds array bounds" in for loop ?

조회 수: 5 (최근 30일)
Rajeev Kumar
Rajeev Kumar 2022년 11월 7일
편집: Joan 2022년 11월 8일
Code:
A= datafile
sumArray = [];
for c = 1:length(A)
col = A(:,c);
sum1 = rms(A(:,c));
sumArray = [sumArray,sum1];
end
s=sumArray'
Attached file = A
Error : Index in position 2 exceeds array bounds (must not exceed 11).

채택된 답변

CHIRANJIT DAS
CHIRANJIT DAS 2022년 11월 7일
@Rajeev Kumar You are giving dimension of row in the for loop. Perhaps you can replace length(A) with size(A,2). Revised code looks like the below one..
sumArray = [];
for c = 1:size(A,2)
col = A(:,c);
sum1 = rms(A(:,c));
sumArray = [sumArray,sum1];
end
s=sumArray'
Cheers

추가 답변 (2개)

Askic V
Askic V 2022년 11월 7일
편집: Askic V 2022년 11월 7일
This is because you're not using length correctly. In fact it is not a good idea to use length when working with matrices.
In your special case, please have a look at the code:
load A.mat
% A is a matrix with dimensions: 1024x11
[nrRows, nrCols] = size(A)
ll = length(A)
I hope you understand now. You have only 11 columns in a matrix, but you're trying to iterate loop from 1 to 1024, where in fact 1024 is the number of rows.

Joan
Joan 2022년 11월 7일
편집: Joan 2022년 11월 8일
W=cell(p,1);
for j=1:(p-1);
w=A(index(j):index(j+1)-2);
W{j}=w;
W2=cell(p,1);
for j=1:(p-1);
w2=A(index(j):index(j+1)-2);
W2{j}=w2
end
Z=
cell
(p,1);
for ii=1:p
P1=W{ii,1};
Z{ii,1}=P1(3:3:end);
end
for ii=1:p
P2=Z{ii,1};
if P2(end,1)>0
W2(ii,1)={[]};
end
end

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by