matlab大作业
- 格式:pdf
- 大小:336.41 KB
- 文档页数:10
安阳工学院专业课课程大作业
课程名称(中文)MATLAB编程应用成绩姓名李健班级10通信工程学号201002030013日期2010年12月22日关于matlab图形绘制的应用摘要:图形处理系统使得MATLAB能方便的图形化显示向量和矩阵,而且能对图形添加标注和打印。它包括强大的二维三维图形函数、图像处理和动画显示等函数。MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。关键词:matlab图形绘制编程应用二维三维一、设计目的
(1)了解MATLAB平面绘图的命令,如MATLAB常用的二维及三维绘图命令。(2)了解MATLAB立体图形的绘制,其中包括常用的立体绘图函数的理解。(3)熟练掌握MATLAB软件,编写计算平均值和标准差公式,编译程序运行是否有错误并改正。(4)掌握使用软件MATLAB用数学方法生成符合要求的图形,会用数学方法对图形图像作需要的处理。二、设计要求(1)应能独立操作,独立使用软件MATLAB及编写程序及操作;(2)每次课后在课外对教师提出的问题的解决程序或者命令在第二次上课前准备好;
(3)综合实验项目涉及到的数学知识必须在教师指导下在课外作好复习。三、Matlab介绍及功能1、matlab的简介
Matlab的图形绘制和数值计算的功能是很强大,熟练的掌握可以为我们解决很多的实际问题。它和c语言、java语言等
一样也是一门独立存在的语言,它强大而智能化的作图功能更好的解决了这方面的问题。下面通过几个具体的实例应用来说这一点。2、MATLAB的绘图功能:(1)二维绘图:A、plot——最基本的二维图形指令:
1.单窗口单曲线绘图;2.单窗口多曲线绘图;3.单窗口多曲线分图绘图;4.多窗口绘图;5.可任意设置颜色与线型;6.图形加注功能;7.fplot——绘制函数图函数;8.ezplot——符号函数的简易绘图函数B、fill——基本二维绘图函数:绘制二维多边形并填充颜色;C、特殊二维绘图函数:bar——绘制直方图;
polar——绘制极坐标图;hist——绘制统计直方图;stairs——绘制阶梯图;stem——绘制火柴杆图;rose——绘制统计扇形图;comet——绘制彗星曲线;errorbar——绘制误差棒图;compass——复数向量图(罗盘图);feather——复数向量投影图(羽毛图);quiver——向量场图;area——区域图;pie——饼图;convhull——凸壳图;scatter——离散点图。matlab中函数bar绘制直方图中的应用函数bar(x)可以绘制直方图,这对统计或者数据采集非常直观实用。它共有四种形式:bar,bar3,barh和bar3h,其中bar和bar3分别用来绘制二维和三维竖直方图,barh和bar3h分别用来绘制二维和三维水平直方图,调用格式是:bar(x,y)其中x必须单调递增或递减,y为nm×矩阵,可视化结果为m组,每组n个垂直柱,也就是把y的行画在一起,同一列的数据用相同的颜色表示;bar(x,y,width)(或bar(y,width))指定每个直方条的宽度,如width>1,则直方条会重叠,默认值为width=0.8;bar(…,’grouped’)使同一组直方条紧紧靠在一起;bar(…,’stack’)把同一组数据描述在一个直方条上。(2)三维绘图:A、三维线图:plot3——基本的三维图形指令
B、三维网格图:mesh——三维网线绘图函数
C、三维表面图:surf——三维曲面绘图函数,与网格图看起来一样D、三维轮廓图:contour——三维轮廓绘图函数
E、三维混合图:surfc——三维混合绘图函数四、设计内容实例1:直方图用直方图显示数据的分布规律。实例2:非线性曲线拟合对一组数据进行近似曲线的非线性曲线拟合。实例3:预测人口通过已有的数据对未来人口的预测。实例1:a、已知两组数据x=[521;873;986;555;432],y=[521;873;986;555;432]。用bar函数对x作纵向直方图,用barh函数对y作横向直方图,并用subplot函数将它们放在一个图中。b、已知两组数据x=[541;893;976;565;432],y=[522;873;976;545;452]。用bar函数对x作纵向直方图用barh函数对y作横向直方图,并用subplot函数将它们放在一个图中。实例2:首先我们得到了两组数据x=[2425283032353840],y=[3029252321191716]。其中y是关于x的函数,通过描点,我们可以看出该曲线近似于函数方程y=ea1xa2,该函数为非线性的。用非线性曲线拟合的方法,可以求得a1=76.9996a2=0.0398即y3=e86.66093-0.0099x然后就可以画出该曲线的方程。即通过已知的一些数据(点),可以求出它们所对应
的函数关系。实例3:我们在已知Logistic人口模型:x(t)=N/(1+(N/x0-1)*exp(-r*t))的情况下,并由所得到的1965年到2004年人口数据x=[72.538,74.542,76.368,78.534,80.671,82.992,85.229,87.177,89.211,90.859,92.420,93.717,94.974,96.259,97.542,98.705,100.072,101.654,103.008,104.357,105.851,107.507,109.300,111.026,112.704,114.333,115.823,117.171,118.517,119.850,121.121,122.389,123.626,124.761,125.786,126.743,127.627,128.453,129.227,129.988],利用nlinfit函数可以算出人口的最大值N和固有的人口增长率r的值,然后由曲线方程预测出2050的人口数据。五、设计的程序清单和运行结果实验1程序如下:实例1a:h0=figure('toolbar','none',...'position',[20050450450],...'name','实例1');subplot(2,1,1)%将图分成两部分,两行一列x=[521873986555432];bar(x)xlabel('X轴');ylabel('Y轴');title('第一子图');subplot(2,1,2)y=[521873986555432];barh(y)xlabel('X轴');ylabel('Y轴');title('第二子图')运行结果:如图1。
图1直方图a实例1b:y=[5329;4727;1573];subplot(2,2,1),bar(y)x=[5911];subplot(2,2,2),bar3(x,y)subplot(2,2,3),bar(x,y,'grouped')subplot(2,2,4),bar(rand(2,3),.75,'stack')运行结果:如图2。
图2直方图b实例2程序如下:程序1:x=[2425283032353840];y=[3029252321191716];yy=log(y);p=polyfit(x,yy,1)a2=-p(1)a1=exp(p(2))运行结果1:p=
-0.03984.3438a2=0.0398a1=76.9996程序2:x=[2425283032353840];y=[3029252321191716];p=polyfit(x,y,2);yy=polyval(p,x);subplot(121);plot(x,y,'*',x,yy);Axis([2060040]);x=0:0.01:300;y=76.9996*exp(-0.0398*x);subplot(122);plot(x,y);Axis([080080]);title('非线性的曲线拟合');xlabel('x轴');ylabel('y=59.7881*exp(-0.0133*x)')运行结果2:如图3。图3非线性曲线拟合实例3程序如下:t=1:40;x=[72.538,74.542,76.368,78.534,80.671,82.992,85.229,87.177,89.211,90.859,92.420,93.717,94.974,96.259,97.542,98.705,100.072,101.654,103.008,104.357,105.851,107.507,109.300,111.026,112.704,114.333,115.823,117.171,118.517,119.850,121.121,122.389,123.626,124.761,125.786,126.743,127.627,128.453,129.227,129.988];%人口的最大值N=p(1),固有的人口增长率r=p(2)f=inline('p(1)./(1+(p(1)/72.538-1)*exp(-p(2)*t))','p','t');p=nlinfit(t,x,f,[200,0.01])%预测2050年人口
t_pre=86;x_pre=p(1)./(1+(p(1)/72.538-1)*exp(-p(2)*t_pre))plot(t,x,'o')holdon