indexing diagonals out of a 4d matrix
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Neekar Mohammed
el 23 de Jun. de 2019
Comentada: Matt J
el 25 de Jun. de 2019
I would like to extract diag elemnts of a 4d matrix and put them in 2d matrix. Any help would be much appreciated.
5 comentarios
John D'Errico
el 24 de Jun. de 2019
Give an example, as the diagonal of a 4-d matrix has no definition. If anything, as Bjorn points out, the result would be ONE dimensional, a vector. So wanting it to become a 2-d matrix makes little sense. That means you need to be clear and specific as to your intent.
Respuesta aceptada
Matt J
el 25 de Jun. de 2019
Editada: Matt J
el 25 de Jun. de 2019
[M1,N1,M2,N2]=size(g);
M=min(M1,M2); N=min(N1,N2);
f=diag(reshape(g(1:M,1:N,1:M,1:N),M*N,[]));
f=reshape(f,M,N);
2 comentarios
Matt J
el 25 de Jun. de 2019
Nekar's comment moved here:
Thank you very much for fast respond. If is like g(x1,x2,y1,y2) (I changed the order) then f(x,y)=g for x1=x2 and y1=y2, Would be the same answer you suggested?
Matt J
el 25 de Jun. de 2019
No, you would have to pre-permute g into (x1,y1,x2,y2) ordering for it to work
g=permute(g,[1,3,2,4]);
For this reason and others, I recommend that you do not use (x1,x2,y1,y2) ordering. It will necessitate a lot of extra manipulation.
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing 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!