Is there a way to vectorize the definition of this matrix ?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Abdelhamid AHAJJAM
el 14 de Dic. de 2019
Comentada: Turlough Hughes
el 15 de Dic. de 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 comentarios
Respuesta aceptada
Turlough Hughes
el 14 de Dic. de 2019
Editada: Turlough Hughes
el 15 de Dic. de 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 comentarios
Stephen23
el 15 de Dic. de 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).'
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!