Is there a way to vectorize the definition of this matrix ?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Abdelhamid AHAJJAM
am 14 Dez. 2019
Kommentiert: Turlough Hughes
am 15 Dez. 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 Kommentare
Akzeptierte Antwort
Turlough Hughes
am 14 Dez. 2019
Bearbeitet: Turlough Hughes
am 15 Dez. 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 Kommentare
Stephen23
am 15 Dez. 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).'
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!