Is there a way to vectorize the definition of this matrix ?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Abdelhamid AHAJJAM
il 14 Dic 2019
Commentato: Turlough Hughes
il 15 Dic 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 Commenti
Risposta accettata
Turlough Hughes
il 14 Dic 2019
Modificato: Turlough Hughes
il 15 Dic 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 Commenti
Stephen23
il 15 Dic 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).'
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!