Is there a way to vectorize the definition of this matrix ?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Abdelhamid AHAJJAM
le 14 Déc 2019
Commenté : Turlough Hughes
le 15 Déc 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 commentaires
Réponse acceptée
Turlough Hughes
le 14 Déc 2019
Modifié(e) : Turlough Hughes
le 15 Déc 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 commentaires
Stephen23
le 15 Déc 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).'
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!