reshape函数(Matlab的reshape函数)

本文目录
- Matlab的reshape函数
- opengl 中reshape函数怎么用
- reshape函数怎么用
- matlab中的reshape命令有什么数学意义
- matlab中怎样将一维数组转化为二维矩阵
- opengl中reshape函数怎么用
- matlab中的reshape命令
Matlab的reshape函数
reshape函数用于重新调整矩阵的行数、列数、维数,但是元素个数不变。
在matlab命令窗口中键入doc reshape或help reshape即可获得该函数的帮助信息。
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 34 5 67 8 9]
使用reshpe后想得到b=[1 2 3 4 5 6 7 8 9]
只需要将a转置一下就可以了:
b=reshape(a’,1,9)
opengl 中reshape函数怎么用
你说的应该是改变窗口形状,所绘制的物体不变形,而只是大小发生变化是吧?
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
if (w 《= h)
gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
else
gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
glMatrixMode(GL_MODELVIEW);
}
看这个reshape函数当窗口发生变化,窗口的w(宽度)和h(高度)参数传给reshape函数,
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
把视口设置为铺满整个窗口, if (w 《= h)
gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
else
gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
把投影得到的视景体按照视口变化的比例变化视景体的比例;简单地说,本来视景体宽高比是1:1,视口宽高比也是1:1,这时绘制了一个物体。然后因为窗口发生变化,视口也变化,假如变成了2:1;这时如果用1:1的视景体放到2:1的视口上肯定会变形,所以要把视景体变成2:1,这样,虽然物体看起来变大(或变小)了,但长宽比例不变,也就看起来不变形了。注意这个参数(GLfloat) w/(GLfloat) h。
reshape函数怎么用
是不是问 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(); // 发送更新消息
}
matlab中的reshape命令有什么数学意义
reshape就是把指定的矩阵改变形状,但是元素个数不变,
例如,行向量:
a = [1 2 3 4 5 6]
执行下面语句把它变成3行2列:
b = reshape(a,3,2)
执行结果:
b =
1 4
2 5
3 6
扩展资料:
调用格式说明
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元素个数相等。
参考资料来源:百度百科-reshape
matlab中怎样将一维数组转化为二维矩阵
1、首先需要知道matlab中将一维数组转化为二维矩阵的,使用的是reshape函数,可以在命令行窗口help reshape,看一下函数用法,如下图所示。
2、输入a=[1 2 3 4 5 6 7 8],创建一个一维数组a,如下图所示。
3、接着输入reshape(a,2,4),将一维数组转化为2行4列的二维矩阵,如下图所示。
4、按回车键之后,可以看到a数组转化为二维矩阵了,如下图所示。
5、最后输入reshape(a,4,2),可以转化为4行2列的矩阵,需要注意的一维数组需要和转化的二维矩阵元素相等,如下图所示。
opengl中reshape函数怎么用
你说的应该是改变窗口形状,所绘制的物体不变形,而只是大小发生变化是吧?
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
if (w 《= h)
gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
else
gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
glMatrixMode(GL_MODELVIEW);
}
看这个reshape函数当窗口发生变化,窗口的w(宽度)和h(高度)参数传给reshape函数,
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
把视口设置为铺满整个窗口, if (w 《= h)
gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
else
gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
把投影得到的视景体按照视口变化的比例变化视景体的比例;简单地说,本来视景体宽高比是1:1,视口宽高比也是1:1,这时绘制了一个物体。然后因为窗口发生变化,视口也变化,假如变成了2:1;这时如果用1:1的视景体放到2:1的视口上肯定会变形,所以要把视景体变成2:1,这样,虽然物体看起来变大(或变小)了,但长宽比例不变,也就看起来不变形了。注意这个参数(GLfloat) w/(GLfloat) h。
matlab中的reshape命令
matlab中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 转置一下就可以了(因为matlab是按列读取的,他会按你分多少行就按列读取多少个数,并不是随机的):
b=reshape(a’,1,9)

更多文章:
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00








