У меня есть 3D-матрица в Matlab, и мне нужно извлечь каждую строку, чтобы создать новые матрицы - PullRequest
0 голосов
/ 22 марта 2020

У меня есть 3d-матрица в следующем виде,

AA = [1,1;2,2];
BB = [1,1;2,2];
CC = [1,1;2,2];
ZZ = cat(3,AA,BB,CC)

NEW_CODE = [1 1; 1 1; 1 1; 2 2; 2 2; 2 2;]

В основном мой код создает матрицу в форме NEW_CODE, мне нужно перенести ее обратно в ZZ.

Чтобы было ясно, с

NEW_CODE =

     1     1
     1     1
     1     1
     2     2
     2     2
     2     2

Кому,

ZZ(:,:,1) =

     1     1
     2     2


ZZ(:,:,2) =

     1     1
     2     2


ZZ(:,:,3) =

     1     1
     2     2

Я пытался это безуспешно,

attempt=NEW_CODE(:,1:3+1:end);

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Вы можете использовать reshape, чтобы разделить верхнюю и нижнюю "половинки" матрицы NEW_DATA, затем shiftdim, чтобы изменить результат по желанию

ZZ2 = shiftdim( reshape( NEW_CODE, [], 2, 2 ), 1 );

Вы можете проверить, что это правильно используя isequal(ZZ,ZZ2), который возвращает true.

0 голосов
/ 22 марта 2020

У меня нет копии Matlab для игры прямо сейчас, поэтому вам нужно будет дважды проверить это

permute( reshape( NEW_CODE' , 2 , 3 , 2 ) , [ 1 3 2 ] )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...