多项式拟合

x=1:1:10;y=-0.9*x.^2+10*x+20+rand(1,10).*5; % 产生测试数据

plot(x,y,'o')  % 绘图并标出原始数据点

p=polyfit(x,y,2)

p = 1×3      -0.7630    8.5343   25.9050

xi=1:0.5:10;

yi=polyval(p,xi); % 计算拟合的结果

hold onplot(xi,yi); % 绘制拟合结果图

clearx = linspace(0,4*pi,10)'; y = sin(x); p = polyfit(x,y,7); x1 = linspace(0,4*pi); y1 = polyval(p,x1); figure

plot(x,y,'o') hold onplot(x1,y1) hold off

如果要进行预测,看之后某些点的走向

x2=linspace(0,4.2*pi,120);y2=sin(x2); x3=x2; y3=polyval(p,x3); figure plot(x,y,'o') hold onplot(x2,y2,'r') plot(x3,y3,'--g')hold off

更为强大的fit函数

一维多项式拟合(曲线)

x = linspace(0,4*pi,10)';y = sin(x);f=fit(x,y,'poly7') % 最大可到poly9

plot(f,x,y)

二维多项式拟合(曲面)

load franke

sf = fit([x, y],z,'poly23') % 最大可到poly55

plot(sf,[x,y],z)

指定拟合参数和类型

clearload censusplot(cdate,pop,'o') fo = fitoptions('Method','NonlinearLeastSquares',...

'Lower',[0,0],...    'Upper',[Inf,max(cdate)],...    'StartPoint',[1 1]);

ft = fittype('a*(x-b)^n','problem','n','options',fo); [curve2,gof2] = fit(cdate,pop,ft,'problem',2)

[curve3,gof3] = fit(cdate,pop,ft,'problem',3)

hold onplot(curve2,'m') plot(curve3,'c') legend('Data','n=2','n=3') hold off

定义函数,根据指定函数文件进行拟合x = [0.81;0.91;0.13;0.91;0.63;0.098;0.28;0.55;...    0.96;0.96;0.16;0.97;0.96]; y = [0.17;0.12;0.16;0.0035;0.37;0.082;0.34;0.56;...    0.15;-0.046;0.17;-0.091;-0.071]; ft = fittype( 'piecewiseLine( x, a, b, c, d, k )' )f = fit( x, y, ft, 'StartPoint', [1, 0, 1, 0, 0.5] )

plot( f, x, y )

排除个别点之后进行拟合

clear[x, y] = titanium; gaussEqn = 'a*exp(-((x-b)/c)^2)+d'

startPoints = [1.5 900 10 0.6]f1 = fit(x',y',gaussEqn,'Start', startPoints, 'Exclude', [1 10 25])

f2 = fit(x',y',gaussEqn,'Start', startPoints, 'Exclude', x < 800)

plot(f1,x,y) title('Fit with data points 1, 10, and 25 excluded')

figure plot(f2,x,y) title('Fit with data points excluded such that x < 800')

曲面情况下剔除部分点,并在图中标记

clearload frankef1 = fit([x y],z,'poly23', 'Exclude', [1 10 25]); f2 = fit([x y],z,'poly23', 'Exclude', z > 1);

figure plot(f1, [x y], z, 'Exclude', [1 10 25]); title('Fit with data points 1, 10, and 25 excluded')

figure plot(f2, [x y], z, 'Exclude', z > 1); title('Fit with data points excluded such that z > 1')

Curve Fitting app

Curve Fitting 3 阶和5阶多项式拟合

滑动平均

clearx = (0:0.1:15)'; y = sin(x) + 0.5*(rand(size(x))-0.5); y([90,110]) = 3; yy0 = smooth(x,y,5); yy1 = smooth(x,y,0.1,'loess'); yy2 = smooth(x,y,0.1,'rloess'); subplot(3,1,1) plot(x,y,'b.',x,yy0,'r-') set(gca,'YLim',[-1.5 3.5]) legend('5') subplot(3,1,2) plot(x,y,'b.',x,yy1,'g-') set(gca,'YLim',[-1.5 3.5]) legend('loess') % Local regressionsubplot(3,1,3) plot(x,y,'b.',x,yy2,'y-') set(gca,'YLim',[-1.5 3.5])

平滑样条

p=0 最小二乘直线拟合

p=1 三次样条插值

使用fit函数进行平滑

f = fit(x,y,'smoothingspline');figure plot(f,x,y)

f = fit(x,y,'smoothingspline','SmoothingParam',0.4);figure plot(f,x,y)

[f,gof,out]= fit(x,y,'smoothingspline','SmoothingParam',0.4)

options = fitoptions('Method','Smooth','SmoothingParam',0.3); [f,gof,out] = fit(x,y,'smooth',options)

一维数据插值

x=0:10;y=cos(x);xi=0:0.25:10;strmod={'nearest','linear','spline','pchip'} % 将插值方法存储到元胞数组

strlb={'(a)method=nearest','(b)method=linear',...'(c)method=spline','(d)method=pchip'} % 绘图标签

for i=1:4

yi=interp1(x,y,xi,strmod{i}); % 插值subplot(2,2,i) % 子图plot(x,y,'ro',xi,yi,'b'),xlabel(strlb(i)) % 绘图

二维数据插值

[x,y,z]=peaks(6); % MATLAB自带的测试函数

figuremesh(x,y,z) % 绘制原始数据图

title('原始数据')

使用fit函数进行插值

figure clear load carbon12alphaf1 = fit(angle,counts,'nearestinterp'); f2 = fit(angle,counts,'pchip');p1 = plot(f1,angle,counts); xlim([min(angle),max(angle)]) hold onp2 = plot(f2,'b'); hold offlegend([p1;p2],'Counts per Angle','Nearest Neighbor','pchip',...    'Location','northwest')

以上内容仅是Matlab课程中一节课很小部分的内容,每节课程内容都非常丰富,老师的经验和技巧,让同学们受益匪浅。想学习更多内容,请添加客服咨询。

Matlab是数学建模必学软件,也是理工科学生和研究生必备软件。自己看教程无趣,找不到学习方法,没有大牛答疑解惑,没有同伴一起学习…现在,校苑数模旗下在线教育平台——极值学院,联合《MATLAB从入门到精通》作者、上市公司高级工程师 董辰辉老师 推出了《MATLAB从入门到算法实践暑假快班》课程,讲师实时互动答疑,保证学习者系统全面的掌握MATLAB。

讲师介绍

董辰辉,畅销MATLAB书籍《MATLAB从入门到精通》作者,上市公司高级算法工程师。自2003年开始多次参加全国大学生、美国大学生、全国研究生数学建模竞赛,均获得优异成绩。使用MATLAB超过15年,精通各种算法及MATLAB算法工具箱,出版有《MATLAB从入门到精通》、《MATLAB2008全程指南》、《MATLAB/Simulink通信系统建模与仿真实例精讲》等教程。

课程目录

MATLAB应用场景介绍

MATLAB功能举例介绍,软件的特点及优势

MATLAB2018a新版本功能介绍

MATLAB“取名神器”介绍

第一章:MATLAB基础技能

MATLAB入门

数据类型

矩阵和数组技巧

可视化及其控制

新版本绘图的功能

绘图控件如何设置属性

图形对象

流程控制

函数的类型

串演算函数

实时编辑器 Live Editor介绍

函数变量

错误和异常的处理

matlab计算效率提升

调试模式,断点设置,如何查找bug修改bug

MATLAB编程规范

第二章:Matlab常用算法及实践

数据拟合、概率统计、随机数的产生、灵敏性检验

数据文件io、大数据处理

优化工具箱介绍(以上课件是本节课部分内容)

模拟退火算法

遗传算法实践

蒙特卡罗算法

蚁群算法

tsp问题演示

时间序列

神经网络

第十一节

图像处理

经济与金融

第十二节

AppDesigner

课程时间

1、全程录播课程,老师时时陪同答疑;

2、视频一年内可无限次回放。

限时优惠

「Matlab从入门到算法实践」系列已经进行了五期。课程受到学员们的一直好评,董老师独特的授课方式和周到的答疑服务,让每个同学都受益匪浅,课程质量领先市场上同类课程,课后答疑服务周到全面,学员的问题全部能得到解决,而且绝大部分疑问在 1 小时之内就得到了老师的答复。

1、部分课件预览:

神经网络算法

蚁群算法

最短路径问题

图像处理

2、课程配套作业预览:

在系统提交的作业还会得到老师的点评

3、课程讨论群答疑截图:

在学习群里不仅老师答疑,同学们也互相讨论,在这样的学习氛围中,大家都不知不觉的提高了。

立即添加极值学课程助教 发送“学matlab”领取 优惠码+100G购课资料礼包