How to create a 2D diagonal matrix from a 3D matrix with a generic dimension? It could be with a loop structure.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mariana
el 16 de Nov. de 2017
Respondida: Matt J
el 16 de Nov. de 2017
%%3D matrix k
n=3;
k=zeros(n)
for a=1:n
for b=1:n
for c=1:n
k(b,c,a)=c;
end
end
end
using blkdiag could be obtained, however for a generic number of matrices n, this doesn't work.
u=blkdiag(k(:,:,1),k(:,:,2),k(:,:,3))
1 comentario
Stephen23
el 16 de Nov. de 2017
What is the expected output? Can you please provide a specific example with input and output arrays.
Respuesta aceptada
KL
el 16 de Nov. de 2017
Use a cell array and then something like,
c = arrayfun(@(x) k(:,:,x),1:n,'uni',0)
u = blkdiag(c{:})
u =
1 2 3 0 0 0 0 0 0
1 2 3 0 0 0 0 0 0
1 2 3 0 0 0 0 0 0
0 0 0 1 2 3 0 0 0
0 0 0 1 2 3 0 0 0
0 0 0 1 2 3 0 0 0
0 0 0 0 0 0 1 2 3
0 0 0 0 0 0 1 2 3
0 0 0 0 0 0 1 2 3
0 comentarios
Más respuestas (1)
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!