matlab 实现散点曲线拟合+拟合函数的获取+绘制曲线的上下顶点的切线

一 多项式拟合,数据分布相对光滑的情况,更想要的是数据的整体分布趋势,对于单个数据点的准确度要求不高


n =5;
%polyfit 返回值p从左到右是高次到低次的多项式p(x)的系数,长度是n+1
%p(x) = p1 * x(n次方) + p2 * x(n-1次方)+ 。。。 + pn * x + pn+1
p = polyfit(x,y,n); 
f1 = polyval(p,x);   
% plot(x,f1,'r-');

%获得多项式的方程
syms m
for k  =1:n+1
    var(k) = m ^(k -1);
end
func = flip(var) .* p;
f = sum(func);
m = min(x):max(x);
scatter(x,y,'o');hold on;
handles1 = plot(m,subs(f));hold on;

%找曲线的最大最小值,即曲线的上下顶点
result = subs(f);
max_f = max(result(:));
min_f = min(result(:));
line( [min(x),max(x)],[max_f,max_f],'linestyle','--');hold on;  %画顶点线
line( [min(x),max(x)],[min_f,min_f],'linestyle','-');hold on;  %画顶点线
pause(2);

%cla reset;这个语句可以实现figure图像的清空
%vap(x)将分数转换为小数

推荐网址,比较全面 https://blog.csdn.net/zengxiantao1994/article/details/77943305

matlab 实现散点曲线拟合+拟合函数的获取+绘制曲线的上下顶点的切线_第1张图片

二 每个数据点都不能丢失,要想连接所有的数据点

    x = [1.0000    1.5000    2.0000    3.0000    4.0000    5.0000    6.0000    8.0000   10.0000   15.0000   20.0000 30.0000   40.0000   50.0000   60.0000   80.0000  100.0000  150.0000];
    y = [1.5700    0.5355    0.3092    3.1920    2.7770    0.9784    0.4529    0.2450    0.1470    0.0647    0.0339 0.0103    0.0045    0.0014    0.0007    0.0004    0.0003    0.0002];
    xx = x(1):1:x(end);
    yy = spline(x,y,xx);
    plot(x,y,'o',xx,yy);

matlab 实现散点曲线拟合+拟合函数的获取+绘制曲线的上下顶点的切线_第2张图片

3 . 绘制没有数据的网格

figure(1);
axis([0 500 1 500])
grid

matlab 实现散点曲线拟合+拟合函数的获取+绘制曲线的上下顶点的切线_第3张图片

你可能感兴趣的:(matlab操作小技巧,机器学习,矩阵,深度学习)