Сложная форма 3D-матрицы - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть 3D-матрица размером 12,3,43:

val(:,:,1) =

9.8226   -0.5904   -0.2306
1.9440   -0.4382   -0.4923
0.0519    0.6613    0.6225
1.7321   -0.4460   -0.5919
0.0833    0.6556    0.5539
9.8226    9.8226    9.8226
9.8729    0.5276   58.2741
3.2360    0.0003    0.1039
0.0720    0.9859    0.7473
0.4310    0.0223    0.0298
0.3656   -0.4085   -1.8384
1.0401   -0.4198    0.0106


...

val(:,:,43) =

   16.2780    2.1931    0.4593
    3.1613    1.3327    0.5388
    0.0016    0.1826    0.5900
    2.7613    1.1525    0.5731
    0.0058    0.2491    0.5666
   16.2780   16.2780   16.2780
   15.2386   12.3233  -71.4624
    6.6782    0.1105    0.0858
    0.0098    0.7396    0.7696
    1.1318    0.2056    0.0357
   -0.7161    0.1360    0.5850
    0.7256    0.7578    0.6312

Сначала я хотел бы изменить направление каждой матрицы, вот так, я делаю это, используя matrix(:,:,1).':

    9.8226    1.9440    0.0519    1.7321    0.0833    9.8226    9.8729    3.2360    0.0720    0.4310    0.3656    1.0401
   -0.5904   -0.4382    0.6613   -0.4460    0.6556    9.8226    0.5276    0.0003    0.9859    0.0223   -0.4085   -0.4198
   -0.2306   -0.4923    0.6225   -0.5919    0.5539    9.8226   58.2741    0.1039    0.7473    0.0298   -1.8384    0.0106

Затем я хотел бы создать новую трехмерную матрицу, которая собирает верхний ряд из каждой записи, второй и третьей, и т. Д. c. Таким образом, в конце концов у меня будет трехмерная матрица размером 12,43,3.

Я пробовал permute и reshape, но я не могу заставить их работать для выполнения задач такого рода.

Пример маленькой игрушки:

a = [1 11; 2 22; 3 33]
b = [4 43; 5 55; 6 66]
c = [7 76; 8 88; 9 90]
d = [10 101; 11 111; 12 121];
Z = cat(3,a,b,c,d)  % The 3D initial matrix

Который должен быть преобразован в

Z_hope(:,:,1) =

     1     2     3
     4     5     6
     7     8     9
    10    11    12


Z_hope(:,:,2) =

    11    22    33
    43    55    66
    76    88    90
   101   111   121
...