MATLAB reshape函數

看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間隔取一個元素組成一個向量b_i,之後的向量b_i+1也是這樣生成,只不過第一個元素往下移一位。這樣做完之後得到m個大小爲n的行向量,將這些行向量拼接即可得到矩陣b。
Matlab <wbr>的reshape函數
 
後記:畢業設計中用到一個向量變換,一開始比較糾結,用循環實現的。迭代1000多次要用到2秒。後來用reshape函數,總共才用了0.03秒,對於我這個深度強迫症患者來說,這兩秒時間我還是看得比較寶貴的,哈哈。
以後寫matlab要引以爲鑑,儘量少用for循環,多用矩陣或者向量的方式來處理。
轉載自
http://blog.sina.com.cn/s/blog_9444ed240101dxx3.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章