2015-04-22 5 views
1

У меня очень большая матрица размером 16384 x 16. Мне нужно получить матрицу 512 x 512. Матрица должна быть соединены следующим образом, Скажем L матрица размером 16384 х 16.By по умолчанию л устроен, как показано нижеКак отделить строки от матрицы?

L = [L1 
     L2 
     L3 
     . 
     . 
     L32]. 

мне нужно, чтобы получить L такое, что G (то есть, новый 512x512 матрица)

 G = [L1L2...L32] 

Здесь каждый L является матрицей 512x16. Сначала я попробовал матрицу 32x32 и получил результаты правильно, но я не смог сделать это для большей матрицы. Что мне делать? Ниже приведен код, который я использовал

 W1 = 32; 
     Ans1 = L(1:W1,:); 
     Ans2 = L(W1+1:end,:); 
     G = [Ans1,Ans2]; 

Спасибо.

ответ

3

Один подход с permute & reshape -

cutlen = 512; %// "Cut" after every cutlen rows 
G = reshape(permute(reshape(L,cutlen,[],size(L,2)),[1 3 2]),cutlen,[]); 
+0

Могу ли я узнать, почему мы должны использовать [1 3 2] и размер (L, 2)? – Roshni191

+0

И спасибо u @Divakar ur code работает как шарм ... – Roshni191

+1

@ Roshni191 Ну, 'size (L, 2)' используется для изменения входного массива в 3D-массив, а затем мы переставляем (переставляем размеры) при обмене размеры между '3' (dim-3) и' 2' (строки). Последним шагом будет преобразование в 2D-массив. – Divakar

Смежные вопросы