Main Content

interp

插值 - 按整数倍数提高采样率

说明

示例

y = interp(x,r) 将输入信号 x 的采样率提高 r 倍。

y = interp(x,r,n,cutoff) 指定两个附加值:

  • n 是用于对扩展信号进行插值的原始采样值数目的一半。

  • cutoff 是输入信号的归一化截止频率,指定为奈奎斯特频率的一部分。

[y,b] = interp(x,r,n,cutoff) 还返回用于插值的滤波器系数。

示例

全部折叠

创建以 1 kHz 频率采样的正弦信号。用因子 4 对其进行插值。

t = 0:1/1e3:1;
x = sin(2*pi*30*t) + sin(2*pi*60*t);
y = interp(x,4);

绘制原始信号和插值后的信号。

subplot(2,1,1)
stem(0:30,x(1:31),'filled','MarkerSize',3)
grid on
xlabel('Sample Number')
ylabel('Original')

subplot(2,1,2)
stem(0:120,y(1:121),'filled','MarkerSize',3)
grid on
xlabel('Sample Number')
ylabel('Interpolated')

输入参数

全部折叠

输入信号,指定为向量。

数据类型: double | single

插值因子,指定为正整数。

数据类型: double | single

用于插值的输入采样数的一半,指定为正整数。为获得最佳结果,使用的 n 不要大于 10。低通插值滤波器的长度为 2×n×r + 1。

数据类型: double | single

输入信号的归一化截止频率,指定为不大于 1 的正实数标量,表示奈奎斯特频率的一部分。值 1 表示信号占据整个奈奎斯特区间。

数据类型: double | single

输出参量

全部折叠

插值后的信号,以向量形式返回。y 的长度是原始输入 xr 倍。

数据类型: double | single

低通插值滤波器系数,以列向量形式返回。

数据类型: double | single

算法

插值将序列的原始采样率提高到更高的速率。它与抽取相反。interp 将零值插入原始信号,然后将低通插值滤波器应用于扩展序列。该函数使用 [1] 中所述的低通插值算法 8.1:

  1. 通过在原始数据值之间插入 0,将输入向量扩展到正确的长度。

  2. 设计一种特殊的对称 FIR 滤波器,它允许原始数据通过滤波器时保持不变,并利用插值处理以最小化插值点与其理想值之间的均方误差。interp 使用的滤波器与 intfilt 返回的滤波器相同。

  3. 将该滤波器应用于扩展的输入向量以生成输出。

参考

[1] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979.

[2] Oetken, G., Thomas W. Parks, and H. W. Schüssler. "New results in the design of digital interpolators." IEEE® Transactions on Acoustics, Speech, and Signal Processing. Vol. ASSP-23, No. 3, June 1975, pp. 301–309.

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出