Is there a way to vectorize the definition of this matrix ?
1 view (last 30 days)
Show older comments
Abdelhamid AHAJJAM
on 14 Dec 2019
Commented: Turlough Hughes
on 15 Dec 2019
I am defining the matrix z this way :
z=zeros(n,m);
for i=1:n
for j=1:m
z(i,j)= i==y(j);
end
end
where y is a vector of size m. Is there a better way to write this ? (one line maybe)
0 Comments
Accepted Answer
Turlough Hughes
on 14 Dec 2019
Edited: Turlough Hughes
on 15 Dec 2019
Here's one way to do it in one line:
z = y.*ones(n,m)==(1:n).'.*ones(n,m);
I tested with the following inputs:
y=1:10;
n=5; m=length(y);
z = y.*ones(n,m)==(1:n).'.*ones(n,m);
edit: following stephens comment.
2 Comments
Stephen23
on 15 Dec 2019
Note that square brackets are a concatentation operator, and should be replaced with grouping parentheses (exactly as the hint in the MATLAB editor also tells you):
(1:n)
It is a good habit to use transpose instead of conjugate transpose (unless you really need the conjugate transpose):
(1:n).'
More Answers (0)
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!