Indexing a matrix with another matrix?

2 ビュー (過去 30 日間)
Petter Stefansson
Petter Stefansson 2016 年 9 月 23 日
コメント済み: Petter Stefansson 2016 年 9 月 23 日
Hi.
I have a 10000x4 matrix, Idx, where each row contains 4 indices to a logical matrix, A. I would like to set all indices in Idx to true (1) in A. This seems like something that should be possible to do very easy in one single line but I can’t quite figure it out so I’m currently doing it by looping:
A = false(10000,256);
for i = 1 : size(A,1)
A(i,Idx(i,:)) = true;
end
which is very slow. Could someone tell me how to do this indexing without a loop?
Thanks

採用された回答

Andrei Bobrov
Andrei Bobrov 2016 年 9 月 23 日
編集済み: Andrei Bobrov 2016 年 9 月 23 日
[m,n] = size(Idx);
[ii,~] = ndgrid(1:m,1:n); % or ii = repmat((1:m)',1,n);
% ii = (1:m)'*ones(1,n);
A(sub2ind(size(A),ii,Idx)) = true;
  1 件のコメント
Petter Stefansson
Petter Stefansson 2016 年 9 月 23 日
Thank you that was significantly faster

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

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