题目:关于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点,





