16

私は行列を持っている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
4

3 に答える 3

23

これはどう?

reshape(a, 3, 2)'

于 2013-05-16T16:09:17.493 に答える