using values in a matrix as index for other matrix
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
I am having matrix G of size 30 x 30 and other matrix L of size m x 2 where m <30, I want to update the values in G based on the values in L
for example L=[1,2;3,4;5,6;7,8;9,10]
L =
1 2
3 4
5 6
7 8
9 10
I want to update values of G(1,2), G(3,4).... i tried sub2ind(), but i am getting "out of range subscript error" how do i resolve this?
Thanking you in advance
0 Commenti
Risposta accettata
Stephen23
il 22 Dic 2014
Modificato: Stephen23
il 22 Dic 2014
sub2ind does exactly what you need:
L=[1,2;3,4;5,6;7,8;9,10];
G = reshape(1:30*30,30,[]);
X = sub2ind(size(G),L(:,1),L(:,2));
G(X)
That error would indicate that your matrix is not really the size that you think it is, and the indices are trying to reference values outside size of the matrix... you should use the size command to check your matrix G, and also try this:
numel(G)
This value must be <= to the maximum index values given in our new variable X, otherwise you will get this "out of range" error.
0 Commenti
Più risposte (1)
Image Analyst
il 22 Dic 2014
Try this:
L=[1,2;3,4;5,6;7,8;9,10]
% The first column of L is the row to change.
% The second column of L is the column to change.
% Create linear indexes.
linearIndexes = sub2ind(size(G), L(:,1), L(:, 2))
% Let's say G starts out as all 99's.
G = 99 * ones(30);
% Now let's change the specified (row, column) locations to 1
G(linearIndexes) = 1
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!