Matlab中插值函数汇总分上下两个部分,主要整合自matlabsky论坛dynamic发表于2009-2-21 21:53:26 的主题帖,以及豆丁网rickoon上传的教材第8章《插值,拟合与查表》;实际上,它很多内容都可以从Matlab-help有关插值函数部分找到对应的部分。博文在整合这两个部分时,对其中的某些细节做了注解(【标以红色的文字】),并对行文方式做了重新编排,去掉了一些不必要的运行结果(这些结果只要将代码复制到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’:在MATLAB5.0 中的三次插值。
       对于超出x 范围的xi 的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。【对于spline、ppval、mkpp、umkpp的具体细节详见‘三次样条插值细节’】
       (4)yi = interp1(x,Y,xi,method,'extrap') 
       对于超出x 范围的xi 中的分量将执行特殊的外插值法extrap。
       (5)yi = interp1(x,Y,xi,method,extrapval) 
       确定超出x 范围的xi 中的分量的外插值extrapval,其值通常取NaN 或0。【extrapval在此处不能用单引号,它只能是某个数值,或者help中给出的NaN与0,否则程序会出错】
       例1

x = 0:10; y = sin(x);
xi= 0:.25:10; yi = interp1(x,y,xi);
plot(x,y,'o',xi,yi) 

例2

year = 1900:10:2010;
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)
x = 1900:1:2010;
y = interp1(year,product,x,'pchip');
plot(year,product,'o',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’—双三次插值。
        例3

[X,Y] = meshgrid(-3:.25:3);
Z = peaks(X,Y);
[XI,YI] = meshgrid(-3:.125:3);
ZI = interp2(X,Y,Z,XI,YI);
mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15)
hold off
axis([-3 3 -3 3 -5 20])

   例4

years = 1950:10:1990;
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(......,method) %用指定的算法method 作插值计算。【与命令2类似,也分为4种插值方法,并且线性插值为缺省算法,这里为避免重复,略去】
      说明:在所有的算法中,都要求X,Y,Z 是单调且有相同的格点形式。当X,Y,Z 是等距且单调时,用算法’*linear’,’*cubic’,’*nearest’,可得到快速插值。
例5

[x,y,z,v] = flow(10);
[xi,yi,zi] = meshgrid(.1:.25:10, -3:.25:3, -3:.25:3);
vi = interp3(x,y,z,v,xi,yi,zi); % vi is 25-by-40-by-25
slice(xi,yi,zi,vi,[6 9.5],2,[-2 .2]), shading flat
 

命令4—— 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 计算。【与命令2类似,也分为4种插值方法,并且线性插值为缺省算法,这里为避免重复,略去】

原文网址:

[1] http://www.matlabsky.com/forum.php?mod=viewthread&tid=690&extra=&ordertype=1&page=1

[2] http://www.docin.com/p-736209256.html

Matlab中插值函数汇总(上)的更多相关文章

  1. Matlab中插值函数汇总(下)

    Matlab中插值函数汇总分上下两个部分,主要整合自matlabsky论坛dynamic发表于2009-2-21 21:53:26 的主题帖,以及豆丁网rickoon上传的教材第8章<插值,拟合 ...

  2. [转载]Matlab中插值函数汇总和使用说明

    http://blog.sciencenet.cn/blog-457143-679275.html MATLAB中的插值函数为interp1,其调用格式为:  yi= interp1(x,y,xi,' ...

  3. MATLAB中的函数的归总

    字符串操作函数 1.        函数eval可以用来执行用字符串表示的表达式 2.        函数deblank可以去掉字符串末尾的所有空格 3.        函数findstr可以用来在长 ...

  4. matlab 中 eps 的分析

    eps(a)是|a|与大于|a|的最小的浮点数之间的距离,距离越小表示精度越高.默认a=1: 这里直接在matlab中输入:eps == eps(1)(true). 我们知道浮点数其实是离散的,有限的 ...

  5. Matlab中的一些小技巧

    (转于它处,仅供参考) 1.. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断.MATLAB这时可能正疲于应付,响应会有些滞后. ...

  6. MATLAB中的set函数

    1.MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值.例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-' .':'.'-.'.'- ...

  7. Matlab中函数定义方法

    Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件 ...

  8. matlab中的卷积——filter,conv之间的区别

    %Matlab提供了计算线性卷积和两个多项式相乘的函数conv,语法格式w=conv(u,v),其中u和v分别是有限长度序列向量,w是u和v的卷积结果序列向量. %如果向量u和v的长度分别为N和M,则 ...

  9. MATLAB中白噪声的WGN和AWGN函数的使用

    MATLAB中白噪声的WGN和AWGN函数的使用如下: MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一 信号 ...

随机推荐

  1. 【textarea】在JSP上添加textarea-文本域 调试使用

    <body> <form name="dataEventDisplay"> <table border="2" bordercol ...

  2. bzoj2565 最长双回文子串

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T, ...

  3. $.meta ? $.extend({}, opts, $this.data()) : opts 是什么

    问:$.meta ? $.extend({}, opts, $this.data()) : opts 是什么 答:这应该是一个jQuery扩展插件中的代码,其中运用了三目运算符,以及jQuery的ex ...

  4. 1041 Be Unique (20 分)

    1041 Be Unique (20 分) Being unique is so important to people on Mars that even their lottery is desi ...

  5. Nginx的ip_hash指令

    ip_hash 语法:ip_hash 默认值:none 使用环境:upstream 当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服 ...

  6. 初次从eclipse转到intellij idea上的一些经验

    如果出现:mvn 请使用 -source 7 或更高版本以启用 diamond 运算符 这种问题 pom.xml里 <build>标签里面 需要加入这么一段 <plugins> ...

  7. [UE4]目标是Pawn、Get Player Character

    “目标是Pawn”表示这一个定义继承与Pawn类的方法. 这样可以很清楚的看到这个是方法是在什么地方定义的 “Get Player Character”可以获得当前控制的角色实例,可以转换成真正具体的 ...

  8. java操作hbase1.3.1的增删改查

    我的eclipse程序在windows7机器上,hbase在linux机器上 1,首先在C:\Windows\System32\drivers\etc下面的HOSTS文件,加上linux 集群 2.直 ...

  9. 在控制终端输入AT命令

    控制台终端输入AT命令到smd8,步骤如下: 1. 先执行命令 cat /dev/smd8 & 2. 再执行  echo  -e  "ati\r\n"  > /dev ...

  10. iOS 一些琐碎的知识点

    1. Xcode左边导航栏中,类文件后面的标记"A""M""?"符号的含义 M = Locally modified 文件已被修改 U = ...