matlab中的yi=matlab interp1函数(y,xi,'spline') 什么意思

当前位置: >
& matlab样条插值 matlab 三次样条插值法作图
matlab样条插值 matlab 三次样条插值法作图
收集整理:/ 时间:
matlab 三次样条插值法作图 p=[0..................193640]; t=2*pi:-pi/9:pi/9; polar(t,p) %以上绘制极坐标图 x=p.*cos(t); y=p.*sin(t); x1=2*pi:-pi/180:pi/9; y1=spline(x,y,x1);%三次样条插值 plot(x1,y1) %以上插值后绘制直角坐标系下的图形。急急急!!!MATLAB里三次样条插值的边界条件第一边界条件first boundary condion第二边界条件second boundary condition周期边界条件periodic boundary condition自然边界条件natural boundary condition。Matlab 三次样条插值
interp1(x,y,x1,spline)x1 计算x1点的值spline 三次样条插值。matlab 三次样条插值法拟合三次多项式
1、m次多项式插值法:利用Matlab里的命令: a = spline(x,y,xx) 其中,x,y为给定点的矩阵,矩阵 a 为矩阵xx所有点对应的拟合值矩 阵。 2、m次拟合法:a = polyfit(x,y,m) 其中,x,y为给定点的矩阵,前者为自变量矩阵,后者为因变量矩阵。m为多项式的次数, a为拟合出来的m次多项式的系数矩阵。 3、在这里x、y都是1*7的矩阵。至于最基本的赋值、创建变量的知识还是要自己看看啊、、、不难的、、。【matlab】三次样条插值造字!关于数值逼近和matlab求高手。matlab实现三次样条插值。如下程序。但我没看出来是什么字啊!!!! x=[322.85 314.134 281.412 256.143 249.78 315.225 343.584 352.31 338.131 313.134 286.866 274.867 295.592];y=[336.563 323.474 244.94 232.942 248.212 229.67 668.279 279.844 311.476 323.474 330.018 306.022 309.294];xi=min(x):0.01:max(x);yi=interp1(x,y,xi,spline);%3次样条插值plot(x,y,*,xi,yi)
x坐标不是单调递增或递减,采样有问题。x须有单调性。求教:matlab样条插值内插的程序
&&x=[520,280,156.6,78,39.62,3.1,0]; &&x1=[0,3.1,39.62,78,156.6,280,520]; &&y=[0,-30,-36,-35,-28.44,-9.4,0]; &&y1=[0,9.4,28.44,35,36,30,0]; &&x2=520:-10.4:0; &&y2=spline(x,y,x2); &&x3=0:10.4:520; &&y3=spline(x1,y1,x3); &&plot(x2,y2,-,x3,y3,-) 其实要加入更多的点的话,你只需要把自变量x的范围按要求变化下就好了。但是要注意的就是样条函数的自变量X要求是递增或是递减,所以分成两段来解。【高分~~~】matlab 三次样条插值 你help spline就直接有定义,里面就有例子: x = -4:4; y = [0.15 1.12 2.36 2.36 1.46 0.49 0.06 0]; cs = spline(x,y); % 三次样条插值函数 xx = linspace(-4,4,101); plot(x,y,o,xx,ppval(cs,xx),-);。求教matlab做三次样条插值和拉格朗日差值问题实验二 Lagrange插值【实验目的】1.了解插值法及Lagrange插值的基本概念.2.学习、掌握MATLAB软件有关的命令。【实验原理】插值法定义:设函数y=f(x)在区间[a,b]上有定义,且已知f(x)在[a,b]上n+1个互异点a x0&x1&…&xn b处的值yi=f(xi),i=0,1,2,…,n.若存在一个简单函数P(x),使P(xi)=yi (i=0,1,2,…,n)(2.1)成立,则称P(x)为f(x)的插值函数,f(x)称为被插函数,点xi(i=0,1,2,…,n)称为插值节点,[a,b]称为插值区间,(2.1)式为插值条件。求插值函数的方法为插值法。利用n次插值基函数可以将满足条件Ln(xn)=yk(k=0,1,2,…,n)的插值多项式Ln(x)表示为 yk (2.2)称Ln(x)为拉格朗日插值多项式【实验内容】 在区间[-5,5]上取截点n=11,等距间隔h=1。matlab 三次样条插值函数 clear x1=[5.20 8.17 9.79 11 12.33 19.07]; y1=[9.67 61.84 79.14 84.51 89.13 100]; y1i=9.67:0.001:100; x1i=pchip(y1,x1,y1i); p=polyfit(y1i,x1i,3)%用polyfit进行3次多项式拟合 %结果为p = 0.8 0.3 f = polyval(p,y1i); plot(y1i,x1i,o,y1i,f,-) plot(y1i,x1i,o,y1i,f,-)%查看拟合结果。matlab样条拟合插值后获得曲线方程这些插值方法最后一般得到的是分段的多项式函数,有pp或b两种保存形式。举个例子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里,每一行代表一个分段函数。输入p.coefsans = 0.1 0.5 0.0 -0.3 0.9 -0.1就可以知道多项式的表达式了,比如第二行表示函数:0.1177*(x-2)^3-0.4180*(x-2)^2 -0.4679*(x-2)+0.9093(这个2就是断点)这个分段函数的。
matlab样条插值相关站点推荐:
赞助商链接
matlab样条插值相关
免责声明: 机电供求信息网部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递 更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您想举报或者对本文章有异议,请联系我们的工作人员。2016年10月优秀大版主2016年8月优秀大版主
2016年9月 总版技术专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
MATLAB中的一些常用命令[转]
一、常用对象操作:
& &除了一般windows窗口的常用功能键外。
1、!dir可以查看当前工作目录的文件。!dir&可以在dos状态下查看。
2、who可以查看当前工作空间变量名,whos可以查看变量名细节。
3、功能键:
& & 功能键& & & & 快捷键& & & & 说明
方向上键& & & & Ctrl+P& & & & 返回前一行输入
方向下键& & & & Ctrl+N& & & & 返回下一行输入
方向左键& & & & Ctrl+B& & & & 光标向后移一个字符
方向右键& & & & Ctrl+F& & & & 光标向前移一个字符
Ctrl+方向右键& & & & Ctrl+R& & & & 光标向右移一个字符
Ctrl+方向左键& & & & Ctrl+L& & & & 光标向左移一个字符
home& & & & Ctrl+A& & & & 光标移到行首
End& & & & Ctrl+E& & & & 光标移到行尾
Esc& & & & Ctrl+U& & & & 清除一行
Del& & & & Ctrl+D& & & & 清除光标所在的字符
Backspace& & & & Ctrl+H& & & & 删除光标前一个字符
& & & & Ctrl+K& & & & 删除到行尾
& & & & Ctrl+C& & & & 中断正在执行的命令
4、clc可以命令窗口显示的内容,但并不清除工作空间。
二、函数及运算
1、运算符:
+:加,& &&&-:减,& && &&&*:乘,& && && && & /:除,&&
\:左除& && &^:幂,& && && &‘:复数的共轭转置,():制定运算顺序。
2、常用函数表:
sin( )& & & & 正弦(变量为弧度)& & & & Cot( )& & & & 余切(变量为弧度)
sind( )& & & & 正弦(变量为度数)& & & & Cotd( )& & & & 余切(变量为度数)
asin( )& & & & 反正弦(返回弧度)& & & & acot( )& & & & 反余切(返回弧度)
Asind( )& & & & 反正弦(返回度数)& & & & acotd( )& & & & 反余切(返回度数)
cos( )& & & & 余弦(变量为弧度)& & & & exp( )& & & & 指数
cosd( )& & & & 余弦(变量为度数)& & & & log( )& & & & 对数
acos( )& & & & 余正弦(返回弧度)& & & & log10( )& & & & 以10为底对数
acosd( )& & & & 余正弦(返回度数)& & & & sqrt( )& & & & 开方
tan( )& & & & 正切(变量为弧度)& & & & realsqrt( )& & & & 返回非负根
tand( )& & & & 正切(变量为度数)& & & & abs( )& & & & 取绝对值
atan( )& & & & 反正切(返回弧度)& & & & angle( )& & & & 返回复数的相位角
atand( )& & & & 反正切(返回度数)& & & & mod(x,y)& & & & 返回x/y的余数
& & & & & & & & sum()& & & & 向量元素求和
& & & & & & & & & & & &
3、其余函数可以用help elfun和help specfun命令获得。
4、常用常数的值:
pi& & & & 3.1415926…….& & & & realmin& & & & 最小浮点数,2^-1022
i& & & & 虚数单位& & & & realmax& & & & 最大浮点数,(2-eps)2^1022
j& & & & 虚数单位& & & & Inf& & & & 无限值
eps& & & & 浮点相对经度=2^-52& & & & NaN& & & & 空值
三、数组和矩阵:
1、构造数组的方法:增量发和linspace(first,last,num)
& & first和last为起始和终止数,num为需要的数组元素个数。
2、构造矩阵的方法:可以直接用来输入数组,也可以用以下提供的函数来生成矩阵。
ones( )& & & & 创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量
zeros()& & & & 创建一个所有元素都为0的矩阵
eye()& & & & 创建对角元素为1,其他元素为0的矩阵
diag()& & & & 根据向量创建对角矩阵,即以向量的元素为对角元素
magic()& & & & 创建魔方矩阵
rand()& & & & 创建随机矩阵,服从均匀分布
randn()& & & & 创建随机矩阵,服从正态分布
randperm()& & & & 创建随机行向量
horcat& & & & C=,水平聚合矩阵,还可以用cat(1,A,B)
vercat& & & & C=,垂直聚合矩阵, 还可以用cat(2,A,B)
repmat(M,v,h)& & & & 将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次
blkdiag(A,B)& & & & 以A,和B为块创建块对角矩阵
length& & & & 返回矩阵最长维的的长度
ndims& & & & 返回维数
numel& & & & 返回矩阵元素个数
size& & & & 返回每一维的长度,=size(A)
reshape& & & & 重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。
rot90& & & & 旋转矩阵90度,逆时针方向
fliplr& & & & 沿垂轴翻转矩阵
flipud& & & & 沿水平轴翻转矩阵
transpose& & & & 沿主对角线翻转矩阵
ctranspose& & & & 转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别
inv& & & & 矩阵的逆
det& & & & 矩阵的行列式值
trace& & & & 矩阵对角元素的和
norm& & & & 矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
normest& & & & 估计矩阵的最大范数矢量
chol& & & & 矩阵的cholesky分解
cholinc& & & & 不完全cholesky分解
lu& & & & LU分解
luinc& & & & 不完全LU分解
qr& & & & 正交分解
kron(A,B)& & & & A为m×n,B为p×q,则生成mp×nq的矩阵
A的每一个元素都会乘上B,并占据p×q大小的空间。
rank& & & & 求出矩阵的刺
pinv& & & & 求伪逆矩阵
A^p& & & & 对A进行操作
A.^P& & & & 对A中的每一个元素进行操作。
四、数值计算
1、线性方程组求解
(1)AX=B的解可以用X=A\B求。
XA=B的解可以用X=A/B求。
如果A是m×n的矩阵,当m=n时可以找到唯一解,mn,超定系统,至少找到一组解。
如果A是奇异的,且AX=B有解,可以用X=pinv(A)×B返回最小二乘解。
(2)AX=b,&&A=L×U,=lu(A),&&X=U\(L\b),即用LU分解求解。
(3)QR(正交)分解是将一矩阵表示为一正交矩阵和一上三角矩阵之积,A=Q×R
& &&&=chol(A),&&X=Q\(U\b)
(4)cholesky分解类似。
& &D=eig(A)返回A的所有特征值组成的矩阵。
& &=eig(A),还返回特征向量矩阵。
3、A=U×S×UT,=schur(A).其中S的对角线元素为A的特征值。
& &Matlab里面的多项式是以向量来表示的,其具体操作函数如下:
conv& & & & 多项式的乘法
deconv& & & & 多项式的除法,【a,b】=deconv(s),返回商和余数
poly& & & & 求多项式的系数(由已知根求多项式的系数)
polyeig& & & & 求多项式的特征值
Polyfit(x,y,n)& & & & 多项式的曲线拟合,x,y为被拟合的向量,n为拟合多项式阶数。
polyder& & & & 求多项式的一阶导数,polyder(a,b)返回ab的导数
=polyder(a,b)返回a/b的导数。
polyint& & & & 多项式的积分
polyval& & & & 求多项式的值
polyvalm& & & & 以矩阵为变量求多项式的值
residue& & & & 部分分式展开式
roots& & & & 求多项式的根(返回所有根组成的向量)
注:用ploy(A)求出矩阵的特征多项式,然后再求其根,即为矩阵的特征值。
常用的插值函数如下:
griddata& & & & 数据网格化合曲面拟合
Griddata3& & & & 三维数据网格化合超曲面拟合
interp1& & & & 一维插值(yi=interp1(x,y,xi,’method’)
Method=nearest/linear/spline/pchip/cubic
Interp2& & & & 二维插值zi=interp1(x,y,z,xi,yi’method’),bilinear
Interp3& & & & 三维插值
interpft& & & & 用快速傅立叶变换进行一维插值,help fft。
mkpp& & & & 使用分段多项式
spline& & & & 三次样条插值
pchip& & & & 分段hermit插值
&&6、函数最值的求解
& && & fminbnd(‘f’,x1,x2,optiset(,))求f在x1和x2之间的最小值。Optiset选项可以有‘Display’+‘iter’/’off’/’final’,分别表示显示计算过程/不显示/只显示最后结果。
& && & fminsearch求多元函数的最小值。
& && & fzero(‘f’,x1)求一元函数的零点。X1为起始点。同样可以用上面的选项。
五、图像绘制:
& &1、基本绘图函数
plot& & & & 绘制二维线性图形和两个坐标轴
plot3& & & & 绘制三维线性图形和两个坐标轴
fplot& & & & 在制定区间绘制某函数的图像。fplot(‘f’,区域,线型,颜色)
loglog& & & & 绘制对数图形及两个坐标轴(两个坐标都为对数坐标)
semilogx& & & & 绘制半对数坐标图形
semilogy& & & & 绘制半对数坐标图形
& &2、线型:
y& & & & 黄色& & & & .& & & & 圆点线& & & & v& & & & 向下箭头
g& & & & 绿色& & & & -.& & & & 组合& & & & >& & & & 向右箭头
b& & & & 蓝色& & & & +& & & & 点为加号形& & & & <& & & & 向左箭头
m& & & & 红紫色& & & & o& & & & 空心圆形& & & & p& & & & 五角星形
c& & & & 蓝紫色& & & & *& & & && &星号& & & & h& & & & 六角星形
w& & & & 白色& & & & .& & & && &实心小点& & & & hold on& & & & 添加图形
r& & & & 红色& & & & x& & & && &叉号形状& & & & grid on& & & & 添加网格
k& & & & 黑色& & & & s& & & && &方形& & & & & & & &
-& & & & 实线& & & & d& & & && &菱形& & & & & & & &
--& & & & 虚线& & & & ^& & & && &向上箭头& & & & & & & &
&&3、可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域。此时如要画不同的图形在一个窗口里,需要hold on。
研究生必备与500万研究生在线互动!
扫描下载送金币
浏览器进程
打开微信扫一扫
随时随地聊科研Matlab中插值函数汇总和使用说明_matlab 插值函数 &#8211; 数据分析
本站分享:大数据、数据分析师考试认证培训,包括:、、、、、、、、、、
> Matlab中插值函数汇总和使用说明_matlab 插值函数
Matlab中插值函数汇总和使用说明
关键词:,,
命令1 interp1
功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。
x:原始数据点
Y:原始数据点
xi:插值点
Yi:插值点
(1)yi = interp1(x,Y,xi)
返回插值向量yi,每一元素对应于参量xi,同时由向量x 与Y 的内插值决定。参量x 指定数据Y 的点。
若Y 为一矩阵,则按Y 的每列计算。yi 是阶数为length(xi)*size(Y,2)的输出矩阵。
(2)yi = interp1(Y,xi)
假定x=1:N,其中N 为向量Y 的长度,或者为矩阵Y 的行数。
(3)yi = interp1(x,Y,xi,method)
用指定的算法计算插值:
’nearest’:最近邻点插值,直接完成计算;
’linear’:线性插值(缺省方式),直接完成计算;
’spline’:三次样条函数插值。对于该方法,命令interp1 调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline 用它们执行三次样条函数插值;
’pchip’:分段三次Hermite 插值。对于该方法,命令interp1 调用函数pchip,用于对向量x 与y 执行分段三次内插值。该方法保留单调性与数据的外形;
’cubic’:与’pchip’操作相同;
’v5cubic’:在MATLAB 5.0 中的三次插值。
对于超出x 范围的xi 的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。
(4)yi = interp1(x,Y,xi,method,&#8217;extrap&#8217;)
对于超出x 范围的xi 中的分量将执行特殊的外插值法extrap。
(5)yi = interp1(x,Y,xi,method,extrapval)
确定超出x 范围的xi 中的分量的外插值extrapval,其值通常取NaN 或0。
&&x = 0:10; y = x.*sin(x);
&&xx = 0:.25:10; yy = interp1(x,y,xx);
&&plot(x,y,&#8217;kd&#8217;,xx,yy)
&& year = 0;
&& product = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505
249.633 256.344 267.893 ];
&&p1995 = interp1(year,product,1995)
&&y = interp1(year,product,x,&#8217;pchip&#8217;);
&&plot(year,product,&#8217;o&#8217;,x,y)
插值结果为:
命令2 interp2
功能 二维数据内插值(表格查找)
(1)ZI = interp2(X,Y,Z,XI,YI)
返回矩阵ZI,其元素包含对应于参量XI 与YI(可以是向量、或同型矩阵) 的元素, 即Zi(i,j) ←[Xi(i,j),yi(i,j)]。用户可以输入行向量和列向量Xi 与Yi,此时,输出向量Zi 与矩阵meshgrid(xi,yi)是同型的。同时取决于由输入矩阵X、Y 与Z 确定的二维函数Z=f(X,Y)。参量X 与Y 必须是单调的,且相同的划分格式,就像由命令meshgrid 生成的一样。若Xi与Yi 中有在X 与Y范围之外的点,则相应地返回nan(Not a Number)。
(2)ZI = interp2(Z,XI,YI)
缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一种情形进行计算。
(3)ZI = interp2(Z,n)
作n 次递归计算,在Z 的每两个元素之间插入它们的二维插值,这样,Z 的阶数将不断增加。interp2(Z)等价于interp2(z,1)。
(4)ZI = interp2(X,Y,Z,XI,YI,method)
用指定的算法method 计算二维插值:
’linear’:(缺省算法);
’nearest’:最临近插值;
’spline’:三次样条插值;
’cubic’:双三次插值。
&&[X,Y] = meshgrid(-3:.25:3);
&&Z = peaks(X,Y);
&&[XI,YI] = meshgrid(-3:.125:3);
&&ZZ = interp2(X,Y,Z,XI,YI);
&&surfl(X,Y,Z);
&&surfl(XI,YI,ZZ+15)
&&axis([-3 3 -3 3 -5 20]);shading flat
&&hold off
&&years = 0;
&&service = 10:10:30;
&&wage = [150.697 199.592 187.625
179.323 195.072 250.287
203.212 179.092 322.767
226.505 153.706 426.730
249.633 120.281 598.243];
&&w = interp2(service,years,wage,15,1975)
插值结果为:
命令3 interp3
功能 (查表)
(1)VI = interp3(X,Y,Z,V,XI,YI,ZI)
找出由参量X,Y,Z决定的三元函数V=V(X,Y,Z)在点(XI,YI,ZI)的值。参量XI,YI,ZI 是同型阵列或向量。若向量参量XI,YI,ZI 是不同长度,不同方向(行或列)的向量,这时输出参量VI 与Y1,Y2,Y3 为同型矩阵。其中Y1,Y2,Y3 为用命令meshgrid(XI,YI,ZI)生成的同型阵列。若插值点(XI,YI,ZI)中有位于点(X,Y,Z)之外的点,则相应地返回特殊变量值NaN。
(2)VI = interp3(V,XI,YI,ZI)
缺省地, X=1:N ,Y=1:M, Z=1:P ,其中,[M,N,P]=size(V),再按上面的情形计算。
(3)VI = interp3(V,n)
作n 次递归计算,在V 的每两个元素之间插入它们的三维插值。这样,V 的阶数将不断增加。interp3(V)等价于interp3(V,1)。
(4)VI = interp3(&#8230;&#8230;,method) %用指定的算法method 作插值计算:
‘linear’:线性插值(缺省算法);
‘cubic’:三次插值;
‘spline’:三次样条插值;
‘nearest’:最邻近插值。
说明 在所有的算法中,都要求X,Y,Z 是单调且有相同的格点形式。当X,Y,Z 是等距且单调时,用算法’*linear’,’*cubic’,’*nearest’,可得到快速插值。
&&[x,y,z,v] = flow(20);
&&[xx,yy,zz] = meshgrid(.1:.25:10, -3:.25:3, -3:.25:3);
&&vv = interp3(x,y,z,v,xx,yy,zz);
&&slice(xx,yy,zz,vv,[6 9.5],[1 2],[-2 .2]);colormap cool
命令4 interpft
功能 用快速Fourier 算法作一维插值
(1)y = interpft(x,n)
返回包含周期函数x 在重采样的n 个等距的点的插值y。若length(x)=m,且x 有采样间隔dx,则新的y 的采样间隔dy=dx*m/n。注意的是必须n≥m。若x 为一矩阵,则按x 的列进行计算。返回的矩阵y 有与x 相同的列数,但有n 行。
(2)y = interpft(x,n,dim)
沿着指定的方向dim 进行计算
命令5 griddata
功能 数据格点
(1)ZI = griddata(x,y,z,XI,YI)
用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata 将返回曲面z 在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的。输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。XI 可以是一行向量,这时XI 指定一有常数列向量的矩阵。类似地,YI 可以是一列向量,它指定一有常数行向量的矩阵。
(2)[XI,YI,ZI] = griddata(x,y,z,xi,yi)
返回的矩阵ZI 含义同上,同时,返回的矩阵XI,YI 是由行向量xi 与列向量yi 用命令meshgrid 生成的。
(3)[XI,YI,ZI] = griddata(&#8230;&#8230;.,method)
用指定的算法method 计算:
‘linear’:基于三角形的线性插值(缺省算法);
‘cubic’: 基于三角形的三次插值;
‘nearest’:最邻近插值法;
‘v4’:MATLAB 4 中的griddata 算法。
命令6 spline
功能 三次样条数据插值
(1)yy = spline(x,y,xx)
对于给定的离散的测量数据x,y(称为断点),要寻找一个三项多项式y = p(x) ,以逼近每对数据(x,y)点间的曲线。过两点(xi, yi) 和(xi+1, yi+1) 只能确定一条直线,而通过一点的三次多项式曲线有无穷多条。为使通过中间断点的三次多项式曲线具有唯一性,要增加两个条件(因为三次多项式有4 个系数):
a.三次多项式在点(xi, yi) 处有: p&i(xi) = p&i(xi) ;
b.三次多项式在点(xi+1, yi+1) 处有: p&i(xi+1) = pi&(xi+1) ;
c.p(x)在点(xi, yi) 处的斜率是连续的(为了使三次多项式具有良好的解析性,加上的条件);
d.p(x)在点(xi, yi) 处的曲率是连续的;
对于第一个和最后一个多项式,人为地规定如下条件:
①. p&1&(x) = p&2&(x)
②. p&n&(x) = p&n&-1(x)
上述两个条件称为非结点(not-a-knot)条件。综合上述内容,可知对数据拟合的三次样条函数p(x)是一个分段的三次多项式:
p (x) x x x
p (x) x x x
p (x) x x x
其中每段pi(x) 都是三次多项式。
该命令用三次样条插值计算出由向量x 与y 确定的一元函数y=f(x)在点xx 处的值。若参量y 是一矩阵,则以y 的每一列和x 配对,再分别计算由它们确定的函数在点xx 处的值。则yy 是一阶数为length(xx)*size(y,2)的矩阵。
(2)pp = spline(x,y)
返回由向量x 与y 确定的分段样条多项式的系数矩阵pp,它可用于命令ppval、unmkpp 的计算。
对离散地分布在y=exp(x)sin(x)函数曲线上的数据点进行样条插值计算:
&&x = [0 2 4 5 8 12 12.8 17.2 19.9 20]; y = exp(x).*sin(x);
&&xx = 0:.25:20;
&&yy = spline(x,y,xx);
&&plot(x,y,&#8217;o&#8217;,xx,yy)
命令7 interpn
功能 n 维数据插值(查表)
(1)VI = interpn(X1,X2,,,Xn,V,Y1,Y2,?,Yn) %返回由参量X1,X2,…,Xn,V 确定的n 元函数V=V(X1,X2,…,Xn)在点(Y1,Y2,…,Yn)处的插值。参量Y1,Y2,…,Yn 是同型的矩阵或向量。若Y1,Y2,…,Yn 是向量,则可以
是不同长度,不同方向(行或列)的向量。它们将通过命令ndgrid生成同型的矩阵, 再作计算。若点(Y1,Y2,…,Yn) 中有位于点(X1,X2,…,Xn)之外的点,则相应地返回特殊变量NaN。
VI = interpn(V,Y1,Y2,?,Yn) %缺省地,X1=1:size(V,1),X2=1:size(V,2),… ,
Xn=1:size(V,n),再按上面的情形计算。
VI = interpn(V,ntimes) %作ntimes 次递归计算,在V 的每两个元素之间插入它们的n 维插值。这样,V 的阶数将不断增加。interpn(V)
等价于interpn(V, 1)。
VI = interpn(?,method) %用指定的算法method 计算:
‘linear’:线性插值(缺省算法);
‘cubic’:三次插值;
‘spline’:三次样条插值法;
‘nearest’:最邻近插值算法。
命令8 meshgrid
功能 生成用于画三维图形的矩阵数据。
格式 [X,Y] = meshgrid(x,y) 将由向量x,y(可以是不同方向的)指定的区域[min(x),max(x) , min(y) , max(y)] 用直线x=x(i),y=y(j) ( i=1,2,…,length(x) ,j=1,2,…,length(y))进行划分。这样,得到了length(x)*length(y)个点,
这些点的横坐标用矩阵X 表示,X 的每个行向量与向量x 相同;这些点的纵坐标用矩阵Y 表示,Y 的每个列向量与向量y 相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy 平面矩形定义域的划分或
曲面作图。
[X,Y] = meshgrid(x) %等价于[X,Y]=meshgrid(x,x)。
[X,Y,Z] = meshgrid(x,y,z) %生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。
X,Y] = meshgrid(1:3,10:14)
计算结果为:
命令9 ndgrid功能 生成用于多维函数计算或多维插值用的阵列
格式 [X1,X2,…,Xn] = ndgrid(x1,x2,…,xn) %把通过向量x1,x2,x3…,xn 指定的区域转换为数组x1,x2,x3,…,xn 。这样, 得到了 length(x1)*length(x2)*…*length(xn)个点,这些点的第一维坐标用矩阵X1 表
示,X1 的每个第一维向量与向量x1 相同;这些点的第二维坐标用矩阵X2 表示,X2 的每个第二维向量与向量x2 相同;如此等等。
其中X1,X2,…,Xn 可用于计算多元函数y=f(x1,x2,…,xn)以及多维插值命令用到的阵列。
[X1,X2,…,Xn] = ndgrid(x) %等价于[X1,X2,…,Xn] = ndgrid(x,x,…,x)
命令10 table1
功能 一维查表
格式 Y = table1(TAB,X0) %返回用表格矩阵TAB 中的行线性插值元素,对X0(TAB的第一列查找X0)进行线性插值得到的结果Y。矩阵TAB 是第一列包含
关键值,而其他列包含数据的矩阵。X0 中的每一元素将相应地返回一线性插值行向量。矩阵TAB 的第一列必须是单调的。
&&tab = [(1:4)&#8217; hilb(4)]
&&y = table1(tab,[1 2.3 3.6 4])
查表结果为:
1.0 0.3 0.2500
2.0 0.0 0.2000
3.3 0.0 0.1667
4.0 0.7 0.1429
Warning: TABLE1 is obsolete and will be removed in future versions. Use INTERP1 or INTERP1Q
转载请注明: &
or分享 (0)}

我要回帖

更多关于 matlab interp1函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信