Effacer les filtres
Effacer les filtres

using values in a matrix as index for other matrix

4 vues (au cours des 30 derniers jours)
Preethi
Preethi le 22 Déc 2014
Modifié(e) : Stephen23 le 22 Déc 2014
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

Réponse acceptée

Stephen23
Stephen23 le 22 Déc 2014
Modifié(e) : Stephen23 le 22 Déc 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.

Plus de réponses (1)

Image Analyst
Image Analyst le 22 Déc 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

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

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

Start Hunting!

Translated by