using values in a matrix as index for other matrix

7 ビュー (過去 30 日間)
Preethi
Preethi 2014 年 12 月 22 日
編集済み: Stephen23 2014 年 12 月 22 日
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

採用された回答

Stephen23
Stephen23 2014 年 12 月 22 日
編集済み: Stephen23 2014 年 12 月 22 日
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.

その他の回答 (1 件)

Image Analyst
Image Analyst 2014 年 12 月 22 日
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

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by