样条曲线插值

样条曲线插值,第1张

iy=interp1(x,y,ix,'spline');

plot(x,y,'ro',ix,iy,'b-')

对走刀曲线,易知x=07时

iy07=interp1(x,y,07,'spline')

iy07 =

16550

保留位小数:y=  1655

给你个计算样条基函数的程序自己用plot画就行

function L=bsp(x,k,knot)

spint=[];

p=length(knot)-k;

q=length(x);

ma=diag(ones(1,p));

for j=1:q

for i=1:p

sp=spmak(knot,ma(i,:));

spint(j,i)=fnval(sp,x(j));

end

end

L=spint;

x 是要求值点向量(当然x可以是一个实数啊);k是B样条基的介数,knot是你自己选得节点向量,很灵活的

>> x=[520,280,1566,78,3962,31,0];

>> x1=[0,31,3962,78,1566,280,520];

>> y=[0,-30,-36,-35,-2844,-94,0];

>> y1=[0,94,2844,35,36,30,0];

>> x2=520:-104:0;

>> y2=spline(x,y,x2);

>> x3=0:104:520;

>> y3=spline(x1,y1,x3);

>> plot(x2,y2,'-',x3,y3,'-')

其实要加入更多的点的话,你只需要把自变量x的范围按要求变化下就好了。但是要注意的就是样条函数的自变量X要求是递增或是递减,所以分成两段来解。

这些插值方法最后一般得到的是分段的多项式函数,有pp或b两种保存形式。

举个例子

clear;clc;

x=1:4;

y=sin(x);

p=spline(x,y)

运行后可以看到结构体p如下

p =

form: 'pp'

breaks: [1 2 3 4]

coefs: [3x4 double]

pieces: 3

order: 4

dim: 1

它是一个3段多项式分段函数(pp),断点为[1 2 3 4](即1~2、2~3、3~4三段),每个分段函数为一个多项式,多项式的系数保存在coefs里,每一行代表一个分段函数。

输入pcoefs

ans =

01177 -07711 07212 08415

01177 -04180 -04679 09093

01177 -00649 -09508 01411

就可以知道多项式的表达式了,比如第二行表示函数:01177(x-2)^3-04180(x-2)^2 -04679(x-2)+09093(这个2就是断点)

这个分段函数的定义域为2~3,如果你要算25的插值,只要把他代入这个函数,就得到了这个多项式即可,当然用matlab只要输入命令ppval(p,25)就可以了

如下:

function

fit_tulun 

%多项式拟合方式

x=linspace(0,4pi,6); 

y_jingque=sin(x);

%决定稀疏样本点数据

p_poly=polyfit(x,y_jingque,5); 

x_poly_fit=linspace(0,4pi,100); 

y_poly_fit=polyval(p_poly,x_poly_fit); 

%三次样条拟合方式

sp=csapi(x,y_jingque); 

%求三次样条函数的导数 

s_diff=fnder(sp,1); 

plot(x_poly_fit,y_poly_fit,'ko',x_poly_fit,y_poly_fit,'b:') 

%plot(x_poly_fit,y_poly_fit,'b:') 

hold

on 

fnplt(sp,'r') 

fnplt(s_diff,'c') 

x1=linspace(0,4pi,200); 

plot(x1,sin(x1),'m','linewidth',18) 

legend('多项式拟合样本点','多项式拟合曲线','三次样条拟合曲线','三次样条导数曲线','正弦曲线精确图形')

以上就是关于样条曲线插值全部的内容,包括:样条曲线插值、拜求助画样条基函数的matlab函数、求教:matlab样条插值内插的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10217721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存