本文目录🧾
正文部分📝
一、数据拟合
polyfit 多项式拟合,并且返回多项式各项系数,即P获得拟合函数的各项系数。
polyval 计算多项式的值。
fittype是自定义拟合函数,就是xy函数根据这个自定义的函数来拟合。
cfun()是利用自定义的函数来拟合出数据x,y,根据所给出的x来得到y。
二、人口预测模型
y=[33815 33981 34004 34165 34212 34327 34344 34458 34498 34476 34483 34488 34513 34497 34511 34520 34507 34509 34521 34513 34515 34517 34519 34519 34521 34521 34523 34525 34525 34527];
% T=年份-起始年份
T=1:30;
%对数据作线性处理
for i=1:30,
x(i)=exp(-i);
Y(i)=1/y(i);
end
%计算回归系数b
c=zeros(30,1)+1;
X=[c,x'];
b=inv(X'*X)*X'*Y'
for i=1:30,
%计算拟合值
z(i)=b(1,1)+b(2,1)*x(i);
%计算离差
s(i)=Y(i)-sum(Y)/30;
%计算误差
w(i)=z(i)-Y(i);
end
%计算离差平方和
S=s*s';
%计算回归误差平方和
Q=w*w';
%计算回归平方和
U=S-Q;
%计算并输出F检验值
F=28*U/Q
%计算非线性回归模型的拟合值
for j=1:30,
p(j)=1/(b(1,1)+b(2,1)*exp(-j));
end
%输出非线性回归模型的拟合曲线
plot(T,y)
hold on
plot(T,p,'r-');
x’代表x的转置,inv(x)代表x的逆矩阵,即inv(x)*x=E。
c=zeros(30,1)+1 这里是因为a相乘的数为1,所以设置为全1,以便一起计算下面的B。
B=inv(X’X)X’*Y’ 获得方程的所有系数,此处是y=a+bx,所以b中得到ab的值。
求F检验值是有公式的,上面是根据公式在求解。
hold on的作用是在原来的图形之上再画一幅图。
三、薄膜渗透率的测定
linspace是指将100-1000分为均匀10个点。
lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options),其中x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;lb、ub为解向量的下界和上界lb≤x≤ub,若没有指定界,则lb=[ ],ub=[ ];options为指定的优化参数;
四、mesh、meshgrid、surf的用法
[x,y]=meshgrid(-2:0.2:2,-2:0.2:2);
z=x.*exp(-x.^2-y.^2);
surf(x,y,z)
meshgrid作用是生成网格矩阵。
surf绘制的是三维着色曲面图:
mesh绘制的是由一排排彩色曲线组成的网格图:
五、地形地貌图形的绘制
[x,y]=meshgrid(1:10);
h=[0,0.02,-0.12,0,-2.09,0,-0.58,-0.08,0,0;...
0.02,0,0,-2.38,0,-4.96,0,0,0,-0.1;...
0,0.1,1,0,-3.04,0,-0.53,0,0.1,0;...
0,0,0,3.52,0,0,0,0,0,0;...
-0.43,-1.98,0,0,0,0.77,0,2.17,0,0;...
0,-2.29,0,0.69,0,0,2.59,0,0.3,0;...
-0.09,-0.31,0,0,0,4.27,0,0,0,-0.01;...
0,0,5.13,7.4,0,1.89,0,0,0.04,0;...
0.1,0,0.58,0,0,1.75,0,-0.11,0,0;...
0,-0.01,0,0,0.3,0,0,0,0,0.01];
[xi,yi]=meshgrid(1:0.1:10);
hi=interp2(x,y,h,xi,yi,'spline');
surf(hi);
xlabel('x'),ylabel('y'),zlabel('h');
interp2是插值函数,在interp2(x,y,h,xi,yi,’spline’)中,x,y是原始数据坐标,h是坐标对应的值,xi,yi是插值的坐标,在x,y范围里,超过x,y范围外则为nan。此处hi有100*100个坐标,在[1,10]内,即在x,y里。surf画的坐标是xi,yi以及得到的插值。
插值算法有以下四种:
- ‘linear’:双线性插值算法(缺省算法)
- ‘nearest’:最临近插值
- ‘spline’:三次样条插值
- ‘cubic’:双三次插值
六、MATLAB循环语句
七、MATLAB取整函数
fix 向零方向取整
round 向最近的方向取整(四舍五入)
floor 向负无穷大方向取整(向地板取值,即向下)
ceil 向正无穷大方向取整(向天花板取值,即向上)