reshape函数是MATLAB中将指定的矩阵变换成特定维数矩阵一种
函数,且矩阵中元素个数不变,函数可以重新调整
矩阵的行数、列数、
维数。函数语法为B = reshape(A,size)是指返回一个和A元素相同的n维数组,但是由向量size来决定重构数组维数的大小。
reshape语法
B = reshape(A,m,n)
B = reshape(A,m,n,p,...)
B = reshape(A,[m n p ...])
B = reshape(A,...,[ ],...)
B = reshape(A,size)
调用格式说明
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))的值必须能被指定维数的乘积所整除。在这里面占位符[ ] 只能使用一次。
应用示例
调整一个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
延伸拓展
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])。
(2)示例
repmat(magic(2),2)
ans =