函数 reshape 的用法
1、B = reshape(A,m,n)
返回一个m*n的矩阵B, B中元素是按列从A中得到的。如果A中元素个数没有m*n个, 则会引发错误。
2、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元素个数相等。
3、B = reshape(A,...,[ ],...)
计算由占位符[ ]所表示的尺寸的长度,这样维度的乘积等价于prod(size(A))。而prod(size(A))的值必须能被指定维数的乘积所整除。在这里面占位符[ ] 只能使用一次。
扩展资料
reshape函数作为MATLAB中将指定的矩阵变换成特定维数矩阵一种函数,且矩阵中元素个数不变,函数可以重新调整矩阵的行数、列数、维数。函数语法为B = reshape(A,size)代表返回一个和A元素相同的n维数组,但是由向量size来决定重构数组维数的大小。
repmat函数与reshape函数功能比较:repmat函数主要是用于快速产生一个矩阵,它的用法一般有下面几种:B = repmat(A,M,N)矩阵B是矩阵A的复制品,其中B的维度为[size(A,1)*M,size(A,2)*N]。
参考资料来源:百度百科-reshape
例如,行向量:
a = [1 2 3 4 5 6]
执行下面语句把它变成3行2列:
b = reshape(a,3,2)
执行结果:
b =
1 4
2 5
3 6
若a=[1 2 3
4 5 6
7 8 9]
使用reshpe后想得到b=[1 2 3 4 5 6 7 8 9]
只需要将a转置一下就可以了:
b=reshape(a',1,9)
例如,行向量:
a = [1 2 3 4 5 6]
执行下面语句把它变成3行2列:
b = reshape(a,3,2)
执行结果:
b =
1 4
2 5
3 6
OpenGL
/
GLUT
方面的问题?
GLUT里
glutReshapeFunc(reshape);
定义
当窗的形状改变事件发生时
调用的处理函数
reshape。
shape
是形状。reshape
是当形状改变时,做些什么来修正窗内的图形显示。
这由程序员自己决定,例如,你可以考虑图形长宽尺度按窗的长宽变化,按比例缩放。你也可以考虑图形长宽尺度不变,....
下面是一个例子:
void
reshape(int
cur_w,
int
cur_h)
{
glClear(GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT);
if
(cur_h
<=
0)
cur_h
=
10;
//
窗太小时处理
glViewport(0,0,
cur_w,
cur_h);
xfactor
=
(float)
glutGet(
GLUT_WINDOW_WIDTH
)
/
(float)
img_width;
//
按比例缩放
yfactor
=
(float)
glutGet(
GLUT_WINDOW_HEIGHT
)
/
(float)
img_height;
//
按比例缩放
glutPostRedisplay();
//
发送更新消息
}
A =[5 5 8 6;9 11 12 5];
B = reshape(A, 4, 2) % 4是新矩阵的列数,2是新矩阵的行数
B =
5 8
9 12
5 6
11 5
广告 您可能关注的内容 |