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

8 views (last 30 days)
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).

Accepted Answer

CHIRANJIT DAS
CHIRANJIT DAS on 7 Nov 2022
@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

More Answers (2)

Askic V
Askic V on 7 Nov 2022
Edited: Askic V on 7 Nov 2022
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 on 7 Nov 2022
Edited: Joan on 8 Nov 2022
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

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!