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

5 Ansichten (letzte 30 Tage)
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).

Akzeptierte Antwort

CHIRANJIT DAS
CHIRANJIT DAS am 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

Weitere Antworten (2)

Askic V
Askic V am 7 Nov. 2022
Bearbeitet: Askic V am 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 am 7 Nov. 2022
Bearbeitet: Joan am 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

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by