matlab 数据拟合

这篇博客探讨了使用最小二乘法进行数据拟合的方法,通过`polyfit`函数拟合多项式曲线,并展示了如何计算拟合残差。文章中还涉及指数函数的拟合以及Excel数据的读取和拟合,最后分析了一个具体的阀门运动曲线拟合案例。
摘要由CSDN通过智能技术生成

数据拟合

clc,clear;
x=[0.5,1.0,1.5,2.0,2.5,3.0];
y=[1.75,2.45,3.81,4.80,7.00,8.60];
p=polyfit(x,y,2);
x1=0.5:0.05:3.0;
y1=polyval(p,x1);
plot(x,y,'*r',x1,y1,'-b');

result
在这里插入图片描述

p=polyfit(x,y,n):最小二乘法计算拟合多项式系数。x,y为拟合数据向量,要求维度相同,n为拟合多项式次数。返回p向量保存多项式系数,由最高次向最低次排列。

y=polyval(p,x):计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序。

clc,clear;
close all;
%将参数a,b合写为向量c
fun=inline('c(1)*exp(c(2)*x)','c','x');
x=[0.1,0.2,0.15,0,-0.2,0.3];
y=[0.95,0.84,0.86,1.06,1.50,0.72];
c=lsqcurvefit(fun,[0,0],x,y)
norm(feval(fun,c,x)-y)^2%计算残差的平方和

result

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

c =

1.0997   -1.4923

ans =

0.0031

2019高教社杯A题拟合

clc,clear;
close all;
x=xlsread('needle_valve_motion_curve.xls','A2:A46');
y=xlsread('needle_valve_motion_curve.xls','B2:B46');
p=polyfit(x,y,3);
x1=0:0.01:0.44;
y1=polyval(p,x1);
plot(x,y,'*r',x1,y1,'-b');
figure;
x2=xlsread('needle_valve_motion_curve.xls','D2:D46');
y2=xlsread('needle_valve_motion_curve.xls','E2:E46');
p2=polyfit(x,y,3);
x21=2.01:0.01:2.45;
y21=polyval(p2,x21);
plot(x,y,'*r',x1,y1,'-b');

result
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值