Matlab学习笔记(一)—— 三维图形绘制
这学期公选课选的是MATLAB,所以准备把这学期所学习的整理到博客上,作为记录,哇咔咔~
一、三维函数图:
x=cos(t), y=sin(t), z=t %0≤t ≤4*pi t=0:0.001:4*pi; %t的取值范围 x=cos(t);y=sin(t);z=t; plot3(x,y,z) xlabel('x轴'),ylabel('y轴'),zlabel('z轴') %为坐标轴加上标签 grid on %为图像加上网格
三维函数的绘制一般使用plot3()函数,其三个基本参数是三个参数函数,第四个参数可以改变函数的颜色,或者虚实线,如plot3(x, y, z, ‘r:’),其绘制的函数图像则为红色虚线的,上述脚本的运行结果如下:
二、三维饼图:
pie3([4 3 6 8 9])
直接调用上述脚本既可以绘制出一个饼图,如果这样调用pie3([4 3 6 8 9], [0 0 1 0 0]),则在第二个向量中值为1的部分会在饼图中以突出的方式显示,上述脚本运行结果如下:
三、绘制空间多边形:
y1=rand(3,5); y2=rand(3,5); y3=rand(3,5); fill3(y1,y2,y3,'m'); hold on; plot3(y1,y2,y3,'yo')
首先rand(3, 5)产生了一个3 * 5 的随机数矩阵,上述脚本中先产生了y1,y2, y3三个3 * 5 的随机矩阵,其中
A = ( y1[0][0], y2[0][0],y3[0][0] ),
B = ( y1[1][0], y2[1][0], y3[1][0] ),
C = ( y1[2][0], y2[2][0], y3[2][0] )
分别是第一个三角形的三个顶点,其他以此类推。所以fill3(y1,y2,y3,’m’); 共产生了5个三角形,并以粉色填充,plot3(y1,y2,y3,’yo’)语句是在每个三角形的顶点加上黄色的小圈,而由于之前加上了hold on; 所以前面的粉色三角形不会被覆盖,运行效果如下:
四、三维网格图:
1、mesh()函数生成网格图:
h2=[1 1;1 -1] h4=[h2 h2;h2 -h2] h8=[h4 h4;h4 -h4] mesh(h8)
上面由迭代生成一个8*8的矩阵,即:
1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1
mesh()函数以矩阵的下标为x,y坐标,生成一个网格图,运行效果如下:
2、meshgrid()函数:
a=[1:2] b=[3:5] [A,B]= meshgrid(a,b)
上述生成了A,B两个矩阵:
A = B = 1 2 3 3 1 2 4 4 1 2 5 5
命令等效于:A=ones(size(b))*a; B=b’*ones(size(a))
3、利用meshgrid()函数和mesh()函数生成网格图:
x=-5:5; y=x; [X,Y]=meshgrid(x,y); Z=X.^2+Y.^2 ; mesh(X,Y,Z)
上述脚本先使用meshgrid()函数生成11 * 11的矩阵,再使用mesh()生成网格图;
五、三维曲面图:
首先三维曲面图和三维网格图不同,其区别有:
(1)网线图:线条有颜色,内部是无颜色
(2)曲面图:线条是黑色的,内部有颜色(把线条之间的空挡填充颜色,沿z轴按每一网格变化)
1、使用peak()函数:
为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:
z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)
2、surfc()函数:
[X,Y,Z]=peaks(20); surfc(X,Y,Z)
上述脚本先调用peaks()函数,再使用surfc()函数便可得出下列图形:
3、colormap()函数:
matlab 的颜色数据集合为红、绿、蓝三颜色矩阵 [R,G,B],维数m×3,R,G,B在[0 1]区间连续取值,理论上颜色种类可达无穷多种,然后我们使用colormap()就可以设置图像颜色,如colormap([0.5 0.7 0.8]),当然,matlab也有常用颜色数据,见下表:
jet —— 饱和值色图II
hsv —— 饱和值色图
gray —— 线性灰度色图
hot —— 暖色色图
cool —— 冷色色图
bone —— 兰色调灰色图
copper —— 铜色色图
pink —— 粉红色图
prism —— 光谱色图
flag —— 红、白、蓝交替色图
如我们调用colormap gray; 就可得到相应的线性灰度色图。
六、图像修饰方法:
1、shading:
我们可以使用colormap()函数进行颜色的修饰,还可以使用shading来控制表面和块等图形对象颜色的渲染:
[X,Y,Z]=sphere(50); surfc(X,Y,Z) colormap cool shading interp axis equal
上述脚本中,我们画了一个球:
shading有多种选项,常用为:faceted / flat / interp, 等等。
//To Be Continued.