插值-matlab实验课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一维插值实例-1 (IV)
可以拖放插值点,插值曲线会跟着变化
实例 interpAnim01.m Animation of various methods for interpolation 11
10
9
8
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
Click and drag a sample point to change the curves.
‘nearest’:临近点插值 ‘linear’:线性插值 ‘spline’:三次样条插值 ‘pchip’:保持形状的三次样条插值 ‘cubic’:和‘pchip’ 一样 ‘v5cubic’:MATLAB 5 所用的三次插值
一维插值实例-1 (II)
例1:interp101.m
x = 0:1:4*pi; y = sin(x).*exp(-x/5); xi = 0:0.1:4*pi; y1 = interp1(x, y, xi, 'nearest'); y2 = interp1(x, y, xi, 'linear'); y3 = interp1(x, y, xi, 'spline'); y4 = interp1(x, y, xi, 'cubic'); plot(x, y , 'o', xi ,y1 ,'g-' ,xi ,y2 ,'r:' ,xi ,y3 ,'k-.', xi, y4, 'b--'); legend('Original', 'Nearest', 'Linear', 'Spline', 'Cubic');
使用语法为 y = interpft(百度文库i, n)
向量 yi 是一个等距取点的函数值 n 则是等距插值的节点个数
一维插值实例-2 (II)
例2:interpft01.m
x = linspace(0, 2*pi, 11); y = sin(x).*exp(-x/5); xi = linspace(0, 2*pi, 21); yi = interpft(y, 21); plot(x, y, 'o', xi, yi); legend('Original', 'Curve by interpft')
一维插值实例-1 (III)
由图可看出, Spline 和 Cubic 所产生的曲线较 光滑,但它们的 计算量比较大
1
Original
Nearest
0.8
Linear
Spline
0.6
Cubic
0.4
0.2
0
-0.2
-0.4
0
2
4
6
8
10
12
14
四种插值方法比较
计算时间
Nearest
1(短)
Linear
在上述图形窗口中,拖放每个插值点,就可以 看到插值曲线的变化,也同时知道各种插值方 法的特性。
一维插值实例-2 (I)
Interpft命令,可进行基于 FFT(Fast Fourier Transform,快速傅立叶变换)的插 值法
先计算给定插值数据的傅立叶变换,再用 更密集的插值点来进行反傅立叶变换
一维插值实例-3 (III)
原有的7个插值点,插 值产生光滑连续的曲线
在计算机图形学 (Computer Graphics) 中最常见的做法
以少数控制点(Control Points)来代表一个物 体,然后在用插值得到 物体的细节
6 Origianl data Interpolated data
一维插值实例-2 (III)
插值曲线必须经 过每一个已知的 插值节点
回归曲线则不需 要通过插值节点
插值法适用于噪 音很小的数据
1 Original Curve by interpft
0.8
0.6
0.4
0.2
0
-0.2
-0.4
0
1
2
3
4
5
6
7
一维插值实例-3 (I)
根据平面上的有限的数据,来描绘出一个 物体的外形,可用一维插值,此时插值数 据会分成两组
2
曲线光滑度 1(差)
2
所用内存
1(少)
2
Cubic
3
Cubic Spline
4(长)
3
4(好)
4(多)
3
注记
使用 interp1命令
向量 x 必须是严格递增或者递减 元素之间不必等距 xi 的范围必须落在 x 的范围内
如果xi 的范围在 x 范围外, 可用yi = interp1(x, y, xi, method, ‘extrap’) 的方式来 进行外插(Extrapolation),来得到范围外的xi 元 素对应的 yi 值
X坐标对其指标(Index)的插值 Y坐标对其指标(Index)的插值
一维插值实例-3 (II)
七个插值点,散布在二维空间,我们可以 用interp1 的 spline 方法,来画出连续光滑 的图形
例3:interp102.m
x = [0 2 4 3 1 2 1]; y = [4 1 1 4 5 2 0]; index = 1:length(x); index2 = linspace(1, length(x), 101); x2 = interp1(index, x, index2, 'spline'); y2 = interp1(index, y, index2, 'spline'); plot(x, y, 'o', x2, y2, '-'); legend('Origianl data', 'Interpolated data');
插值法
一维插值
一维插值(1-D Interpolation)
根据一组已知的数据点(包含输入与输出,其中输 入是一维数据,输出也是一维数据)
构造一个连续的函数 算出任意节点的函数值
一维插值的方法很多,MATLAB 提供了两种基 本的方法:
基于多项式的插值方法 基于FFT(Fast Fourier Transform,快速傅立叶变
化)的插值法
一维插值实例-1 (I)
Interp1命令,其原理是利用多项式来进行插值 运算
使用语法为 yi = interp1(x, y, xi, method)
向量 x 是插值数据 x 坐标(输入值) 向量 y 是插值数据 y 坐标(输出值) xi 是插值点(输入值,对应输出值值位置) 字串 method 指定使用的方法
5
4
3
2
1
0
-1
0
0.5
1
1.5
2