Matlab图形设计.docx
《Matlab图形设计.docx》由会员分享,可在线阅读,更多相关《Matlab图形设计.docx(16页珍藏版)》请在冰豆网上搜索。
Matlab图形设计
基于Matlab特殊图形的绘制
目录
一、设计目的……………………………………………………………2
二、设计原理……………………………………………………………2
三、设计过程(程序说明及运行结果)………………………………2
3.1区域图的绘制………………………………………………………2
3.2填充图的绘制………………………………………………………3
3.3直方图的绘制………………………………………………………4
3.4二维、三维饼图的绘制……………………………………………5
3.5二维、三维柄状图的绘制…………………………………………6
3.6阶梯图的绘制………………………………………………………7
3.7向量图(罗盘图,羽状图)的绘制………………………………8
3.8圆体图(球体、椭球体)的绘制……………………………………8
四、设计体会……………………………………………………………9
五、附录………………………………………………………………10
5.1定义图形绘制的函数……………………………………………10
5.2程序中部分函数及作用…………………………………………11
5.3程序源代码………………………………………………………11
一、设计目的
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
其具有非常强大的图形表达功能,既可以绘制二维图形,又可以绘制三维图形,还可以通过标注、视点、颜色、光照等操作对图形进行修饰。
与数值计算和符号计算相比,图形的可视化技术是数学计算人员所追求的更高级的一种技术,因为对于数值计算和符号计算来说,不管计算的结果是多么的准确,人们往往无法直接从大量的数据和符号中体会它们的具体含义。
而图形处理技术则给人们提供了一种更直接的表达方式,可以使人们更直接、更清楚地了解事物的结果和本质。
MATLAB语言除了有强大的矩阵处理功能之外,它的绘图功能也是相当强大的。
MATLAB语言提供了一套功能强大的绘图命令,这些命令可以根据输入的数据自动完成图形的绘制,为计算过程和结果的可视化提供了极佳的手段。
Matlab应用在特殊图形的绘制,以解决在科研等领域,绘制特殊而又复杂图形这一难题。
二、设计原理
利用matlab函数提供的特殊绘图函数来实现特殊图形的绘制,如:
区域图、填充图、条形图、直方图、圆体图、球体、椭球体、饼图(2维、3维)、排列图、二维柄状图、三维柄状图、阶梯图、散点图、轮廓图、向量图(罗盘图;羽状图、箭头图、法线图)。
其相应的函数为:
surfnorm,quiver,feather,compass,contour3,contour,plotmatrix,scatter,scatter3,stairs,stem,stem3,pareto,pie3,pie,ellipsoid,sphere,cylinder,hist,bar3,bar,fill3,fill,area.
并通过编写相应的程序来实行图形的绘制,利用具体实例说明matlab的各种绘图函数的功能。
三、设计过程(程序说明及运行结果)
3.1区域图的绘制
面域图指令area,程序如下:
y=rand(10,3)*100;
x=1:
10;
area(x,y);
xlabel(‘Year’);
ylabel(‘Count’)
运行结果
图1区域图
3.2填充图的绘制
用fill制图程序:
clf;n=10;%多边形的边数
dt=2*pi/n;t=0:
dt:
2*pi
t=[t,t
(1)];%fill指令要求数据向量的首位重合,使图形封闭。
x=sin(t);y=cos(t);
fill(x,y,'c');axisoff%画填色多边形,隐去坐标轴。
ht=text(0,0,'\fontname{隶书}\fontsize{32}十边形');
%文字注释且得图柄。
set(ht,'Color','k','HorizontalAlignment','Center')
%依靠图柄设置属性。
运行结果:
图2二维填充图
用fill3制图程序:
X=[0.50.50.50.5;0.50.50.50.5;0110];
Y=[0.50.50.50.5;0.50.50.50.5;0011];
Z=[1111;0000;0000];C=[1001;0101;0010];
fill3(X,Y,Z,C),view([-1055]),colormapcool
xlabel('x'),ylabel('y'),boxon;gridon
运行结果
图3三维填充图
3.3直方图的绘制
用bar绘图程序:
x=[13452];
bar(x);
运行结果:
图4二维直方图
用bar3绘图程序:
x=[23457;12321];
bar3(x)
运行结果:
图5三维直方图
用hist绘图程序:
x=randn(5000,1);
hist(x,20);
运行结果:
图6统计直方图
3.4二维、三维饼图的绘制
用pie绘图程序:
x=[2354];
explode=[1100];%“1”代表向外拖出的元素
pie(x,explode);
图7二维饼图
用pie3绘图程序:
x=[2354];
explode=[1100];
label={'春','夏','秋','冬'};
pie3(x,explode,label);
运行结果:
图8三维饼图
3.5二维、三维柄状图的绘制
用stem绘图程序:
t=0:
0.2:
4*pi;
y=cos(t).*exp(-t/5);
stem(t,y,'fill');
运行结果:
图9二维柄状图
用stem3绘图程序:
theta=-pi:
0.05:
pi;
x=cos(theta);
y=sin(theta);
z=abs(cos(3*theta)).*exp(-abs(theta/3));
stem3(x,y,z);
运行结果:
图10三维柄状图
3.6阶梯图的绘制
用stairs绘图程序:
t=0:
0.4:
4*pi;
y=cos(t).*exp(-t/5);
stairs(t,y);
运行结果:
图11阶梯图
3.7向量图(罗盘图、羽状图)的绘制
用feather绘制羽状图,用compass绘制罗盘图,程序如下:
t=-pi/2:
pi/12:
pi/2;%在区间,每
取一点。
r=ones(size(t));%单位半径
[x,y]=pol2cart(t,r);%极坐标转化为直角坐标
subplot(1,2,1),compass(x,y),title('Compass')
subplot(1,2,2),feather(x,y),title('Feather')
运行结果:
图12羽状图和罗盘图
3.8圆体图(球体、椭球体)的绘制
用sphere绘制球,绘图程序:
clc,clearall;
figure
(1)
[m,n,p]=sphere(50);t=abs(p);
surf(m,n,p,t);holdon;
mesh(2*m,2*n,2*p),colormap(hot);
holdoff;hiddenoff
axisequal
图13球体
用cylinder绘制椭球,绘图程序:
clearall;clc;%画出由母线x^2/a^2+y^2/b^2=1绕z轴旋转出的椭球面
a=sqrt(4);b=sqrt
(1);%这里取a=2,b=1
t=linspace(-b,b);
r=a*sqrt(1-t.^2/b^2);
[x,y,z]=cylinder(r);
z=(z-.5)*2*b;
mesh(x,y,z);axisequal;
图14椭球体
四、设计体会
经过几天的奋战我的课程设计终于完成了。
课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
这次的课程设计主要是让我更加
深入的学习使用了MATLAB,利用对图像的处理来学习MATLAB这个软件。
我认识到了MATLAB这个软件,其功能非常的强大,由总包和若干个工具箱组成,可以实现数值分析、自动控制、图像处理、神经元网络等若干个领域的计算和图形显示,它将这些不同领域的计算用函数的形式分类成对用户完全透明的库函数,构成一个个针对专门领域的工具箱。
使得我们在使用的时候用户直接调用这些库函数并赋予实际参数就能解决实际问题,具有极高的变成效率。
我觉得通过这次课设之后,我发现MATLAB强大的功能。
不仅仅局限于我们分析信号与系统的时候用到的那些功能,还有其他更多更广泛的用途。
在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。
虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。
五、附录
5.1定义图形绘制的函数
函数名
含义
函数名
含义
area
面域图绘图函数
stem3
三维柄状图函数
fill
二维填充图
绘图函数
stairs
阶梯图绘图函数
fill3
三维填充图
绘图函数
feather
向量图
(羽状图)
bar
二维垂直的
直方图
compass
向量图
(罗盘图)
bar3
三维垂直的
直方图
sphere
球体绘图函数
hist
统计直方图
cylinder
椭球体绘图函数
stem
二维柄状图函数
5.2程序中部分函数及作用
函数名
作用
函数名
作用
for
预定的次数重复执行的循环语句
end
与for、while、if、switch语句匹配的结束标志语句
if
条件执行语句
else
与if匹配
axis
控制坐标轴比例和外观
subplot
创建子图图区
title
图形标题
xlabel
X轴标签
ylabel
Y轴标签
zlabel
Z轴标签
clf;n
多边形的边数
surf
表面图
5.3程序源代码
1、区域图的绘制
area程序:
y=rand(10,3)*100;
x=1:
10;
area(x,y);
xlabel(‘Year’);
ylabel(‘Count’)
2、填充图的绘制
fill程序:
clf;n=10;
dt=2*pi/n;t=0:
dt:
2*pi
t=[t,t
(1)];
x=sin(t);y=cos(t);
fill(x,y,'c');axisoff
ht=text(0,0,'\fontname{隶书}\fontsize{32}十边形');
set(ht,'Color','k','HorizontalAlignment','Center')
fill3程序:
X=[0.50.50.50.5;0.50.50.50.5;0110];
Y=[0.50.50.50.5;0.50.50.50.5;0011];
Z=[1111;0000;0000];C=[1001;0101;0010];
fill3(X,Y,Z,C),view([-1055]),colormapcool
xlabel('x'),ylabel('y'),boxon;gridon
3、直方图的绘制
bar程序:
x=[13452];
bar(x);
bar3程序:
x=[23457;12321];
bar3(x)
hist程序:
x=randn(5000,1);
hist(x,20);
4、二维、三维饼图的绘制
pie程序:
x=[2354];
explode=[1100];
pie(x,explode);
pie3程序:
x=[2354];
explode=[1100];
label={'春','夏','秋','冬'};
pie3(x,explode,label);
5、二维、三维柄状图的绘制
stem程序:
t=0:
0.2:
4*pi;
y=cos(t).*exp(-t/5);
stem(t,y,'fill');
stem3程序:
theta=-pi:
0.05:
pi;
x=cos(theta);
y=sin(theta);
z=abs(cos(3*theta)).*exp(-abs(theta/3));
stem3(x,y,z);
6、阶梯图的绘制
stairs程序:
t=0:
0.4:
4*pi;
y=cos(t).*exp(-t/5);
stairs(t,y);
7、向量图(罗盘图、羽状图)的绘制
feather、compass程序:
t=-pi/2:
pi/12:
pi/2;
r=ones(size(t));
[x,y]=pol2cart(t,r);
subplot(1,2,1),compass(x,y),title('Compass')
subplot(1,2,2),feather(x,y),title('Feather')
8、圆体图(球体、椭球体)的绘制
sphere绘制球程序:
clc,clearall;
figure
(1)
[m,n,p]=sphere(50);t=abs(p);
surf(m,n,p,t);holdon;
mesh(2*m,2*n,2*p),colormap(hot);
holdoff;hiddenoff
axisequal
cylinder绘制椭球程序:
clearall;clc;
a=sqrt(4);b=sqrt
(1);
t=linspace(-b,b);
r=a*sqrt(1-t.^2/b^2);
[x,y,z]=cylinder(r);
z=(z-.5)*2*b;
mesh(x,y,z);axisequal;