J'ai une matrice M-by-M-by-N, qui est une concaténation de N matrices M-by-M. Je veux réduire cette matrice à une matrice M-by-N en prenant les diagonales de chaque sous-matrice M-by-M et en les concaténant ensemble. Comment puis-je le faire d'une manière simple et vectorisée?Comment indexer les diagonales d'une matrice 3D dans MATLAB?
1
A
Répondre
3
Vous pouvez le faire en obtenant les indices linéaires des diagonales et l'utiliser pour former une nouvelle matrice
[M,~,N]=size(A);%# A is your matrix
indx=cumsum([1:(M+1):M^2; M^2.*ones(N-1,M)]);%#diagonal indices
B=A(indx');%'# transpose to get MxN
Dans ce qui précède, je l'ai utilisé ~
d'ignorer que la sortie de la fonction. Cependant, cela ne fonctionne que si vous utilisez MATLAB R2009b et plus. Si votre version est plus ancienne, utilisez plutôt une variable fictive.
Questions connexes
- 1. Reconstruire la matrice à partir de diagonales dans matlab
- 2. MATLAB Insérer une matrice dans une matrice 3D
- 3. Matlab - Trouver les valeurs matricielles 2d dans la matrice 3d
- 4. Binning 3D dans Matlab
- 5. Matrices 3D Sparse dans Matlab
- 6. Comment "aplatir" ou "indexer" un tableau 3D dans une matrice 1D?
- 7. Store MATLAB 3d viewport
- 8. Traverse rectangulaire matrice en bandes diagonales
- 9. 2D et MATLAB Trier matrice 3D et l'accès par index
- 10. Tracé 3D dans Matlab
- 11. Comment indexer une matrice en segments
- 12. 3d tableau Matlab plot
- 13. Matlab: matrice 3D de valeurs discrètes tirées d'un vecteur
- 14. Enlever toutes les 0 lignes complètes dans une matrice 3d dans matlab
- 15. Tracé 3D dans Matlab
- 16. Matlab isolant tableau 2D à partir de la matrice 3D
- 17. matrice diluée dans matlab
- 18. Matrice manipulation dans MATLAB
- 19. Créer une matrice 3d à partir d'une matrice 2d existante dans Matlab
- 20. Visualisation de volume 3D MATLAB
- 21. tracer un point 3d dans MatLab
- 22. matrice binaire dans MATLAB
- 23. Comment calculer les valeurs propres d'une matrice dans matlab lorsque toutes les entrées de la matrice sont des variables?
- 24. CUDA 3D matrice indice
- 25. 3D Gaussian Filter dans MATLAB
- 26. Comment indiquer une tranche spécifique d'une matrice 3D dans MATLAB à l'aide de GPU?
- 27. comment concaténer la matrice dans Matlab
- 28. matlab 3D spectogram
- 29. Comment facilement faire croiser le produit d'une matrice 3x3 avec un vecteur 3d dans matlab?
- 30. Comment faire cette matrice diagonale dans matlab?
Hmmm, je pensais avoir déjà répondu à quelque chose comme ça, mais il m'a fallu du temps pour le trouver: [changer les diagonales à 1 dans une matrice 4 dimensions dans matlab] (http://stackoverflow.com/questions/ 5319178/changeant-diagonales-en-1-en-4-matrice-matricielle-en-matlab). Bien qu'il y ait de légères différences (assignation versus indexation, 3-D versus 4-D), les réponses sont assez générales pour que les questions puissent probablement être considérées comme des doublons. Peut-être un raffinement des titres et des étiquettes est-il dans le but de les rendre plus faciles à trouver (je me trouve dire beaucoup ces derniers temps). – gnovice
Beaucoup de questions sont décrites en termes de besoins du demandeur (par exemple, comment puis-je calculer la concentration à partir du bla bla), mais sont essentiellement des questions de manipulation matricielle. Je proposerais de les nettoyer plus tard, après que le demandeur soit satisfait, pour le rendre plus général (c.-à-d., Supprimer les besoins spécifiques et le couper aux os nus). Cela aiderait en fait les personnes à chercher des réponses à les trouver plus facilement et, espérons-le, à réduire les dupes, car dans la plupart des cas, la confusion est due à la façon dont la question est formulée. – abcd
@R. M .: J'ai déjà fait quelques modifications afin que les titres et les balises soient plus clairs et nous espérons qu'ils apparaîtront mieux dans les recherches pour ce genre de question de manipulation de matrice. – gnovice