Problem with Matrix indexing using vector

Hello, I have a problem with indexing matrix elements. I use the following code to describe my problem:
a = blkdiag(ones(3),ones(3));
[r,c] = find(a);
b = zeros(size(a));
b(r,c) = 1;
I assume that the matrix a and the matrix b are equal, but they are not. I can solve this problem with a for-loop, but for a very large matrix this solution is too slow. Are there any other solutions? Thank yoou for your help!

 採用された回答

Jan
Jan 2019 年 11 月 20 日
編集済み: Jan 2019 年 11 月 20 日

0 投票

This is a job for sub2ind:
a = blkdiag(ones(3),ones(3));
[r,c] = find(a);
b = zeros(size(a));
index = sub2ind(size(a), r, c);
b(index) = 1;
isequal(a, b) % TRUE
Maybe using logical indexing is more efficient than find():
mask = (a == 1);
b = zeros(size(a));
b(mask) = 1;

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrices and Arrays についてさらに検索

製品

リリース

R2019b

質問済み:

2019 年 11 月 20 日

編集済み:

Jan
2019 年 11 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by