複製鏈接
請複製以下鏈接發送給好友

reshape

鎖定
reshape函數是MATLAB中將指定的矩陣變換成特定維數矩陣一種函數,且矩陣中元素個數不變,函數可以重新調整矩陣的行數、列數、維數。函數語法為B = reshape(A,size)是指返回一個和A元素相同的n維數組,但是由向量size來決定重構數組維數的大小。 [1] 
外文名
reshape
類    別
計算機編程
功    能
矩陣變換
應    用
MATLAB
語    法
reshape(A,size)

reshapereshape語法

B = reshape(A,m,n)
B = reshape(A,m,n,p,...)
B = reshape(A,[m n p ...])
B = reshape(A,...,[ ],...)
B = reshape(A,size)

reshape調用格式説明

B = reshape(A,m,n)
返回一個m*n的矩陣B, B中元素是按列從A中得到的。如果A中元素個數沒有m*n個, 則會引發錯誤。
B = reshape(A,m,n,p,...)和B = reshape(A,[m n p ...])
返回一個和A具有相同元素的N(不是上面的參數n)維數組。但B的尺寸是m*n*p*...,m*n*p*...必須和prod(size(A))相等。即A和B元素個數相等。
B = reshape(A,...,[ ],...)
計算由佔位符[ ]所表示的尺寸的長度,這樣維度的乘積等價於prod(size(A))。而prod(size(A))的值必須能被指定維數的乘積所整除。在這裏面佔位符[ ] 只能使用一次。 [2] 

reshape應用示例

調整一個3*4矩陣到2*6矩陣(內容與圖冊相同):
A =
1 4 7 10
2 5 8 11
3 6 9 12
B = reshape(A,2,6)
B =
1 3 5 7 9 11
2 4 6 8 10 12
B = reshape(A,2,[])
B =
1 3 5 7 9 11
2 4 6 8 10 12

reshape延伸拓展

repmat函數與reshape函數功能比較:
(1)repmat函數
repmat函數主要是用於快速的產生一個矩陣,它的用法一般有下面幾種:
B = repmat(A,M,N)
矩陣B是矩陣A的複製品,其中B的維度為[size(A,1)*M, size(A,2)*N]。寫成repmat(A,[M,N])也是可以的;如果寫成repmat(A,N),那麼它等價於repmat(A,N,N)或者repmat(A,[N,N])。 [3] 
(2)示例
repmat(magic(2),2)
ans =
  1     3     1     3
  4     2     4     2
  1     3     1     3
  4     2     4     2

參考資料
  • 1.    張志湧 , 楊祖櫻 . MATLAB教程:北京航空航天大學出版社,2015.1
  • 2.    張賢明 . MATLAB語言及應用案例 :東南大學出版社,2010.9
  • 3.    薛山. MATLAB基礎教程(第三版):清華大學出版社,2017.9