插值和拟合

%一维插值步骤  最好用样条插值
%(1)输入已知数据,x,y
%(2)输入待插自变量的值x1  可为点或
x=1:12;%插值点
y=[5 8 9 15 25 29 31 30 22 25 27 24];
x1=1:0.1:12;
y1=interp1(x,y,x1,'spline');%
hold on
plot(x1,y1,'r:')   %作图  记得区别
xlabel('x'),ylabel('y')
 plot(x,y,'*',x1,y1)  %星点为插值点
hold off


%新建拉格朗日函数
function y0=Lagrange(x,y,x0)  %新建函数后可直接用langrange()
n=length(x);
l=ones(1,n);
for k=1:n
    for j=1:n
        if j~=k
            l(k)=l(k)*(x0-x(j))/(x(k)-x(j));
        end
    end
end
y0=sum(y.*l);
end

%拉格朗日插值 要新建 不太好用?
function plane
x0=[0 3 5 7 9 11 13 15];
y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];
x=0:0'1:15;
y1=lagrange(x0,y0,x);
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');


%二维插值步骤  最好用立方插值
%(1)先输入二维数据的x,y坐标值
%(2)输入Z数据
%(3)输入待插点的x,y坐标
%(4)应用函数插值即可
x=1:5;
y=1:3;
temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
mesh(x,y,temps);
xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi',yi,'cubic');
mesh(xi,yi,zi);


%多项式拟合步骤
%(1)输入待拟合数据x,y
%(2)输入函数公式进行拟合
x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66   9.56 9.48 9.30 11.2];
A=polyfit(x,y,2)


%非线性拟合 
%[b,r]=polyfit(x,y,fun(y1),b0,option)
%x,y被拟合数据
%fun为拟合函数 @(a)""
%b0为拟合参数的初始迭代值
%b为拟合参数  r为拟合残差


%指定函数拟合步骤
% (1)输入待拟合数据x,y
%(2)指定函数关系式
syms t;
x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];
y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.09;0.032;-0.015;-0.02];%指定函数形式为f(t)=acos(kt)e^(wt),进行拟合
f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});
cfun=fit(x,y,f)     %显示拟合函数
xi=0:.1:20;
yi=cfun(xi);
plot(x,y,'r*',xi,yi,'b-');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值