How can I convert an Array with row values to a binary Matrix?

Hi,
I have an array A containing natural numbers. The indices of the array represent the current column and the numbers itself represent the rows of a matrix M. Now I want to set the matrix at one for the corresponding values in the array.
Like the following code
A = [2 3 3 4 5 4 3];
M = zeros(length(A));
for i= 1:length(A)
M(A(i),i) = 1;
end
M
M = 7×7
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
I know that using loops in Matlab can be very slow and I want a faster way of computing this, since the array in my project has a length of 60000. Is there a way to run compute this faster?

 採用された回答

Cris LaPierre
Cris LaPierre 2023 年 6 月 30 日
Porabbly with sub2ind.
A = [2 3 3 4 5 4 3];
M = zeros(length(A));
Col = 1:length(A);
ind = sub2ind(size(M),A,Col);
M(ind) = 1
M = 7×7
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

製品

リリース

R2023a

質問済み:

2023 年 6 月 30 日

コメント済み:

2023 年 6 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by