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

2 ビュー (過去 30 日間)
Kjell
Kjell 2023 年 6 月 30 日
コメント済み: Kjell 2023 年 6 月 30 日
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 件)

カテゴリ

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

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by