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

2 views (last 30 days)
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?

Accepted Answer

Cris LaPierre
Cris LaPierre on 30 Jun 2023
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

More Answers (0)

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!