题目:关于matlab图形绘制的应用 一、简介 Matlab的图形绘制和数值计算的功能是很强大,熟练的掌握可以为我们解决很多的实际问题。它和c语言、java语言等一样也是一门独立存在的语言,它强大而智能化的作图功能更好的解决了这方面的问题。下面通过几个具体的实例应用来说这一点。 实例1:直方图 用直方图显示数据的分布规律。 实例2:非线性曲线拟合 对一组数据进行近似曲线的非线性曲线拟合。 实例3:预测人口 通过已有的数据对未来人口的预测。 二、程序设计 实例1: 已知两组数据x=[5 2 1;8 7 3;9 8 6;5 5 5;4 3 2], y=[5 2 1;8 7 3;9 8 6;5 5 5;4 3 2]。用bar函数对x作纵向直方图,用barh函数对y作横向直方图,并用subplot函数将它们放在一个图中。 实例2: 首先我们得到了两组数据x=[24 25 28 30 32 35 38 40], y=[30 29 25 23 21 19 17 16]。其中y是关于x的函数,通过描点,我们可以看出该曲线近似于函数方程y=,该函数为非线性的。用非线性曲线拟合的方法,可以求得a1 =76.9996 a2 =0.0398 即y3= 然后就可以画出该曲线的方程。即通过已知的一些数据(点),可以求出它们所对应的函数关系。 实例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: function exampleone h0=figure('toolbar','none',... 'position',[200 50 450 450],... 'name','实例1'); subplot(2,1,1) %将图分成两部分,两行一列 x=[5 2 1 8 7 3 9 8 6 5 5 5 4 3 2]; bar(x) xlabel('X轴'); ylabel('Y轴'); title('第一子图'); subplot(2,1,2) y=[5 2 1 8 7 3 9 8 6 5 5 5 4 3 2]; barh(y) xlabel('X轴'); ylabel('Y轴'); title('第二子图') 实例2: x=[24 25 28 30 32 35 38 40]; y=[30 29 25 23 21 19 17 16]; yy=log(y); p=polyfit(x,yy,1) a2=-p(1) a1=exp(p(2)) p = -0.0398 4.3438 a2 = 0.0398 a1 = 76.9996 x=[24 25 28 30 32 35 38 40]; y=[30 29 25 23 21 19 17 16]; p=polyfit(x,y,2); yy=polyval(p,x); subplot(121); plot(x,y, '*',x,yy); Axis([20 60 0 40]); x=0:0.01:300; y=76.9996*exp(-0.0398*x); subplot(122); plot(x,y); Axis([0 80 0 80]); title('非线性的曲线拟合'); xlabel('x轴 '); ylabel('y=59.7881*exp(-0.0133*x)') 实例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') hold on tt=1:0.1:100; xx=p(1)./(1+(p(1)/72.538-1)*exp(-p(2).*tt)); plot(tt,xx) hold on plot(t_pre,x_pre,'ks') title('预测2050年人口(单位:千万)') text(t_pre,x_pre+2,num2str(x_pre)) p = 158.6897 0.0428 x_pre = 154.0807 四、体会 Matlab被称之为“矩阵实验室”,它的强项是强大的矩阵计算。通过对matlab的学习,我们可以用它来解决很多的实际的问题,可以说matlab是一种很好的数学工具,它不仅在矩阵的运算,图形的绘制方面有着强大的功能,而且还可以用程序设计(如M文件)来解决各种数学建模上的问题。Matlab产品的工具箱分别涵盖了数据获取、科学计算、控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。因此,可以说熟练的掌握它,对我们以后各方面的学习以及研究有着很重要的作用。 5
matlab大作业.doc
下载此电子书资料需要扣除0点,