Extract values from a matrix using a for loop
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to get a 3x20 matrix populated with the eigenvalues from the eig function. The first values are populated in the matrix, that is, column one has three rows of numbers but the other 19 columns are not populating.
The error reads
Index in position 1 exceeds array bounds (must not exceed 3).
my code:
A = [3x60 double]
Eig=zeros(3,20)
for i=1:20
A1=A(i:i+2,i:i+2)
Eig(:,i)=eig(A1)
end
Any help would be greatly appreciated. Thanks.
2 commentaires
dpb
le 12 Jan 2021
A = [3x60 double]
...
for i=1:20
A1=A(i:i+2,i:i+2)
What is value of i:i+2 when i >=1?
Don't know what the intent here is, but the reason for the error is clear; you cannot address A(2:4,2:4) when size(A)==>3,60.
Réponses (1)
dpb
le 15 Déc 2018
for i=1:20
A1=A(i:i+2,i:i+2);
...
The first indices into A are the same as the second expression.
i i:i+2 A subscripts
1 1:3 A(1:3,1:3)
2 2:4 A(2:4,2:4)
3 3:5 A(3:5,3:5)
...
Probably what you intended to write was
for i=1:20
A1=A(:,i:i+2);
...
to pick up all three rows for the sequential series of columns...
2 commentaires
dpb
le 16 Déc 2018
Excuse me? That is the code logic YOU provided, not me! :)
What would the algebraic expression be that would increment the index by 3? Or, alternatively, use the optional increment value to iterate by a non-default value.
Alternatively yet, if you have the Image Processing Toolbox, it contains the function blockproc which applies a function to a defined area of an array and puts the result into an output array...
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!