文章目录
- 一、实验目的
- 二、实验内容
- 三、仿真结果
- 四、实践中遇到的问题及解决方法
一、实验目的
1. 掌握基本的二维绘图中曲线图的绘制方法。
2. 掌握三维绘图中曲面图的绘制方法。
3. 掌握三维绘图中网线图的绘制方法。
4. 了解三维表面图的绘制方法。
5. 了解图形的渲染方法、剪切、光照效果以及色调搭配等内容。
二、实验内容
1.常用的图形绘制命令
指令 | 说明 |
---|---|
plot | 基本二维曲线图形命令 |
stairs | 阶梯图;主要用于采样数据 |
stem | 二维杆图;主要用于离线数据 |
polar | 以极坐标绘制图形 |
2.颜色和线型
指令 | 颜色或线型 | 指令 | 颜色或线型 | 指令 | 颜色或线型 |
---|---|---|---|---|---|
b | 蓝 | g | 绿 | r | 红 |
c | 青 | m | 品红 | y | 黄 |
k | 黑 | w | 白 | - | 实线 |
: | 虚线 | -. | 点划线 | – | 双划线 |
3.数据点形
指令 | 数据点形 | 指令 | 数据点形 | 指令 | 数据点形 |
---|---|---|---|---|---|
. | 实心黑点 | + | 十字符 | * | 星号 |
^ | 向上三角 | < | 向左三角 | > | 向右三角 |
v | 向下三角 | d | 菱形 | h | 六角星 |
o | 空心圆 | p | 五角星 | s | 方块 |
x | 叉号 |
4.坐标控制
指令 | 说明 |
---|---|
axis auto | 使用缺省设置 |
axis off | 取消轴背景 |
axis(V) | 人工设定坐标范围,例如:V=[x1,x2,y1,y2,z1,z2] |
axis normal | 缺省矩形坐标系 |
axis equal | 横、纵轴等长刻度 |
axis square | 产生正方形坐标系 |
axis image | 横、纵轴等长刻度,且坐标矿紧贴数据范围 |
axis tight | 把数据范围直接设为坐标范围 |
5. 分格线和坐标框
指令 | 说明 |
---|---|
grid | 分格线切换(状态翻转) |
grid on/off | 画出/不画分格线 |
box | 坐标形式切换(状态翻转) |
box on/off | 使当前坐标呈封闭式/开启式 |
注:缺省设置为不画分格线、封闭式
6.图形标识
指令 | 说明 |
---|---|
title(‘s’) | 书写图名 |
xlabel(‘s’) | 横坐标轴名 |
ylabel(‘s’) | 纵坐标轴名 |
legend(‘s1’,’s2’,…) | 线型、颜色、数据点的图例 |
text(x,y,’s’) | 在图形(x,y)坐标处标注释 |
7.多次叠绘
指令 | 说明 |
---|---|
hold on | 保持图形和坐标轴,准备绘制新曲线 |
hold off | 取消叠绘 |
8. 双纵坐标图
指令 | 说明 |
---|---|
plotyy(X1,Y1,X2,Y2) | 以左右不同纵轴绘制两条曲线 |
9.多子图
指令 | 说明 |
---|---|
subplot(m,n,k) | 选择m×n幅子图中的第k幅为当前子图 |
10.获取二维图形数据的指令(唯一能从图上获取数据的指令)
指令 | 说明 |
---|---|
[x,y]=ginput(n) | 用鼠标从二维图形上获取n个点的数据坐标(x,y);该指令仅适用于二维图形;指令中的x,y存放所取点的坐标;n必须为正整数,它表示用户希望通过鼠标从图上获得的数据点个数。 |
11.三维图形指令
指令 | 说明 |
---|---|
plot3(X,Y,Z,’s’) | 表现单参数的三维曲线 |
mesh(X,Y,Z,C) | 表现网线图/曲面图,mesh不上色 |
surf(X,Y,Z,C) | 表现网线图/曲面图,surf上色 |
12.三维图形的修饰
指令 | 说明 |
---|---|
view([az,el]) | 视点控制,通过方位角az、俯视角el设置视点 |
colormap(hot) | 设置当前图形窗的着色色图 |
alpha(n) | 对图形进行透明度处理 |
shading interp | 对图形进行浓淡处理 |
三、仿真结果
1.一条曲线可由下列方程式表示:
x=sin(-t)+t;y=1-cos(-t)
当t由0变化到4*pi时,画出此曲线在XY平面的轨迹。
答:
>> t=0:pi/100:4*pi;
x=sin(-t)+t;
y=1-cos(-t);
plot(x,y),
title('第一题')
2.Chebysheve多项式的定义如下:y=cos(m/cos(x))
其中x的值介于[-1,1],当m的值由2变化到5时,我们可得到4条曲线,请使用hold on/off指令将这4条曲线画在同一张图上面,分别用细实线,虚点线,点划线和虚划线表示,加图名,并且使用legend指令来标明每一条曲线。思考:如果四条线的颜色要求都用黑色怎么处理?
答:
>> x=-1:0.01:1;
y=cos(2./cos(x));
plot(x,y,'k-'),hold on,
y1=cos(3./cos(x));
plot(x,y1,'k:'),hold on,
y2=cos(4./cos(x));
plot(x,y2,'k-.'),hold on,
y3=cos(5./cos(x));
plot(x,y3,'k--'),title('第二题'),
legend('y=cos(2/cos(x))','y1=cos(3/cos(x))','y2=cos(4/cos(x))','y3=cos(5/cos(x))')
思考:四条线的颜色要求用黑色,已在上述中表示,用’k’表示黑色。
3.在多子图模式下绘制y=sin(t)sin(9t)及其包络线,第三幅子图的位置自己指定。
答:
>> t=(pi*(0:1000)/1000)';
y1=sin(t);
y2=sin(9*t);
y12=sin(t).*sin(9*t);
subplot(2,2,1),plot(t,[y1,-y1]),
axis([0,pi,-1,1]),
subplot(2,2,2),plot(t,y12),
axis([0,pi,-1,1]),
subplot('position',[0.2,0.05,0.6,0.45]),
plot(t,y12,'b-',t,[y1,-y1],'r:'),axis([0,pi,-1,1]),title('第三题')
4.绘制三维曲线x=sint,y=cost,z=sintcost,t取值[0,2pi]
答:
>> t=0:pi/200:2*pi;
x=sin(t);
y=cos(t);
z=sin(t).*cos(t);
plot3(x,y,z),
view([27,30]),
title('第四题')
5.x取值[-2,2],y取值[-2,2],步长自拟,产生三维网络X,Y,并在一个图形窗口绘制z=xexp^(-xx-y*y)的三维网络图,三维曲面图,并给图形加上x轴标签,y轴标签。
答:
>> x=-2:0.01:2;
y=-2:0.01:2;
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.*X-Y.*Y);
subplot(1,2,1),plot3(X,Y,Z),
view([27,30]),shading interp,
xlabel('X'),ylabel('Y'),zlabel('Z'),
title('第五题'),
subplot(1,2,2),surf(X,Y,Z),
colormap(hot),view([27,30]),shading interp
xlabel('X'),ylabel('Y'),zlabel('Z'),
title('第五题')
四、实践中遇到的问题及解决方法
1.问题:画三维图形时,分不清三维网络图和三维曲面图的区别
解决方法:三维网络图和三维曲面图是不同的概念,其中用plot3(X,Y,Z,’s’)画三维网络图;用mesh(X,Y,Z,C)或surf(X,Y,Z,C)画三维网线图/曲面图,mesh不上色,surf上色
2.问题:最开始绘图时分不清是点还是线。例如:plot(x,y),plot(x,y,‘r–’),plot(x,y,‘rs-.’)
解决方法:用MATLAB多次绘制,可以找到规律,其中plot(x,y)默认的是蓝色的实线,plot(x,y,‘r–’)对应的是红色的双划线,plot(x,y,‘rs-.’)对应的既有红色的方块点形,又有红色的点画线。
3.问题:不会使用ginput指令
解决方法:它的应用指令是[x,y]=ginput(n),需要从图上获取数据,其中n必须为正整数,我们可以通过鼠标从图上获得的数据点个数。指令中的x,y存放所取点的坐标。
4.问题:画完一幅图后,想在这幅图上接着构绘曲线,不知道怎么办?
解决方法:使用指令hold on
5.问题:图名标注时,有特殊字符不知道如何书写?例如:ρ=1-cosθ
解决方法:这里不应该用软键盘书写,应该常采用特殊字符对应的字符串。该题可以写成:\rho=1-cos\theta。
6.问题:学习绘图时,杆图,梯形曲线图依旧用plot画,不知道咋弄?
解决办法:杆图对应的是stem,梯形曲线图对应的是stairs
7.问题:绘制三维图形时,MATLAB显示出来的图形经常重叠,看不到它的总体轮廓
解决办法:加一个view([az,el]),进行视点控制,通过方位角az、俯视角el设置视点,可以从合适的角度观察它的轮廓。