indexing diagonals out of a 4d matrix

2 vues (au cours des 30 derniers jours)
Neekar Mohammed
Neekar Mohammed le 23 Juin 2019
Commenté : Matt J le 25 Juin 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 commentaires
John D'Errico
John D'Errico le 24 Juin 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.
Neekar Mohammed
Neekar Mohammed le 24 Juin 2019
Thank you very much for your comments. I have a correlation data which is a 4D matrix, let's say g(x1,y1,x2,y2) I want to calculate the intensity which is a 2D matrix f(x,y)=g where x1=x2 and y1=y2. So yes I want it to become a 2D matrix. Many thanks. Neekar

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 25 Juin 2019
Modifié(e) : Matt J le 25 Juin 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 commentaires
Matt J
Matt J le 25 Juin 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
Matt J le 25 Juin 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing 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!

Translated by