Remodeler la matrice 3d à la 2d matrice
J'ai une matrice 3d (n-by-m-by-t
) dans MATLAB représentant n-by-m
mesures dans une grille sur une période de temps. Je voudrais avoir une matrice 2d, où l'information spatiale est parti et seulement n*m
mesures au fil du temps t
sont à gauche (c'est à dire: n*m-by-t
)
Comment puis-je faire cela?
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de la commande
carré
:Dire que votre matrice initiale est (juste pour moi pour obtenir certaines données):
Ensuite, si les deux dernières coordonnées spatiales (le temps est 4, m 6, n 8), vous pouvez utiliser:
et vous vous retrouvez avec un 4x48 tableau.
Si les deux premiers sont de nature spatiale et la dernière est temps de (m 4, n 6, le temps est à 8) que vous utilisez:
et vous vous retrouvez avec un 24x8 tableau.
C'est un rapide, O(1) opération (il vient de l'ajuster en-tête de la forme des données). Il y a d'autres façons de le faire, par exemple,
a=a(:,:)
de condenser les deux dernières dimensions, mais remodeler est plus rapide.Remodeler est bien sûr la solution standard pour le remodelage d'un tableau. (Quoi d'autre auraient-ils l'appeler?) Il y a encore quelques trucs à découvrir.
Tout d'abord, la façon la plus simple pour transformer un tableau de taille [n,m,p] dans un tableau de taille [n*m,p]?
Mais le mieux, c'est ce:
Si vous laissez l'un des arguments pour remodeler vide, puis remodeler calcule la taille pour vous! Soyez prudent, si vous l'essayez et de la taille de l'Un n'est pas conforme, vous obtiendrez une erreur. Donc:
Logiquement, nous ne pouvons pas créer un tableau de deux colonnes à partir de quelque chose qui a 9 éléments. Je n'ai mis une fonction appelée wreshape sur le MATLAB Central de l'échange pad nécessaires pour effectuer cette opération sans erreur générée.
Bien sûr, vous pouvez toujours utiliser des trucs comme
pour créer un vecteur directement à partir d'une matrice. C'est l'équivalent de la forme
Une meilleure solution à ce problème est l'utilisation nshape.m disponible à partir de Rasmus Bro N-Sorte de boîte à outils. Qui vous permettra de remodeler le long d'un mode donné, ce qui est un peu plus délicat avec la réorientation de la commande.
La boîte à outils est disponible sur le lien suivant:
https://www.mathworks.com/matlabcentral/fileexchange/1088-the-n-way-toolbox
Il y a quelques autres excellents outils là pour vous aider avec la matrice de manipulation.