Matlabのreshape関数

1351 ワード

変換元:http://blog.sina.com.cn/s/blog_9444ed240101dxx3.html
Matlabのhelpドキュメントを見るとよくわかりません.
前のコードを渡します.
>>  a=[1 2 3;4 5 6;7 8 9;10 11 12];
>>  b=reshape(a,2,6);
このコードの結果は次のとおりです.
>> a
        1       2       3
        4       5       6
        7       8       9
      10      11      12
>> b
        1       7       2       8       3       9
        4      10       5      11       6      12
b=reshape(a,m,n)について;
その法則は、マトリクスaを列ごとに分割し、m*nの大きさのベクトルに接合することである.そして、このベクトルに対してm間隔ごとに1つの要素を取って1つのベクトルb_を構成するi,その後のベクトルb_i+1もこのように生成されるが,最初の要素は1ビット下にシフトするだけである.これにより、m個の大きさnの行ベクトルが得られ、これらの行ベクトルをつなぎ合わせるとマトリクスbが得られる.
Matlab 的reshape函数_第1张图片  
後記:卒業設計でベクトル変換を用い、最初は葛藤し、サイクルで実現した.1000回以上反復するには2秒かかります.その後reshape関数を使って、全部で0.03秒しかかかりませんでした.私のこの深さ強迫症患者にとって、この2秒の時間は私はやはり貴重に見ています.はは.
後でmatlabを書くには鑑として、forループをできるだけ少なくし、マトリクスやベクトルで処理します.