MATLAB曲线拟合

引言

使用MATLAB拟合曲线有两种常用方式:1)使用cftool工具箱;2)polyfit函数多项式拟合。工具箱需要人工交互得到拟合结果,结果不适合调用。我们下面针对polyfit函数结合例子拟合进行测试。

polyfit

调用方式:

    p = polyfit(x,y,n)
    [p,S] = polyfit(x,y,n)
    [p,S,mu] = polyfit(x,y,n)

此 MATLAB 函数 返回阶数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最小二乘方式中)。p 中的系数按降幂排列,p 的长度为n+1。

例子

x = 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 on
plot(x1,y1)
hold off

在这里插入图片描述

拟合结果为7次多项式,当我们无法确定多项式时,如何自动的判断阶数呢?

for i=1:10
    p = polyfit(x,y,i);
    f = polyval(p,x);     %计算拟合函数在x处的值。
    if sum((f-y).^2)<0.01
        n = i
        break;
    end
end

假设我们的误差平方和精度范围为0.01,那么通过以上程序,我们可以看到用7阶函数拟合,就可以达到精度要求。在多项式进行拟合的时候这个值我们在程序执行的过程中就直接可以调用。

完整示例

clc
clear all
close all

x = linspace(0,4*pi,10);
y = sin(x);

for i=1:10
    p = polyfit(x,y,i);
    f = polyval(p,x);     %计算拟合函数在x处的值。
    if sum((f-y).^2)<0.01
        n = i
        break;
    end
end
p = polyfit(x,y,n);

x1 = linspace(0,4*pi);
y1 = polyval(p,x1);
figure
plot(x,y,'o')
hold on
plot(x1,y1)
hold off

f = poly2sym(p)
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值