Изменить форму вектора MATLAB по-разному - программирование
Подтвердить что ты не робот

Изменить форму вектора MATLAB по-разному

Скажем, у меня есть матрица a = [1 2 3 4 5 6];, как я могу ее изменить по-разному, например reshape(a, 2, 3), чтобы получить

1 2 3 
4 5 6

а не по умолчанию для столбца, созданного MATLAB:

1 3 5 
2 4 6

Я считаю, что это тривиальная задача, которая, вероятно, имеет встроенную функцию для достижения этой цели. Я уже реализовал функцию, которая делает это отлично... однако, есть ли более короткий, более аккуратный и более способ MATLAB? Спасибо.

function y = reshape2(x, m, n) 
  y = zeros(m, n);

  ix = 0; 
  for i = 1:m
     for j = 1:n
         ix = ix + 1;
         y(i, j) = x(ix);
     end 
  end 
end
4b9b3361

Ответ 1

Как насчет этого?

reshape(a, 3, 2)'

Ответ 2

Общий способ преобразования матрицы m*n A в матрицу A p*k по-разному:

c=reshape(A',1,m*n) 
B=reshape(c,k,p)' 
example: m=3 n=4 , p=6, q=2
A=[1 2 3 4; 5 6 7 8; 9 10 11 12] 
c=[1 2 3 4 5 6 7 8 9 10 11 12] 
B=[1 2 ; 3 4; 5 6; 7 8; 9 10; 11 12] 

Ответ 3

Это действительно изменение (A ', cols, rows)'

(измените форму (a ', 3, 2) "в вашем примере)