%一维插值步骤 最好用样条插值
%(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-');
插值和拟合
最新推荐文章于 2024-08-22 21:24:01 发布