我正在尝试编写一个函数,该函数接受一个输入信号并将其延迟一个非整数索引。该函数基于 Matlab 中已有的理想带限分数延迟滤波器技术,通过调用函数designFracDelayFIR。
我真的不明白为什么输出信号不是输入信号的延迟版本,而是它的缩放版本,幅度要低得多。此外,比例因子似乎取决于所使用的分数延迟。
输入序列是 4000 个样本的音频信号,采样频率 Fs=8 kHz。
下面的代码展示了函数的实现
function [y] = fractionaDelaySequence(fd,x)
%design fractional delay filter
[h,i0,bw] = designFracDelayFIR(fd)
fdf = dsp.FIRFilter(h);
y = fdf(x);
subplot(2,1,1);
stem(x(1:256));
title('Input Sequence');
xlabel('n')
subplot(2,1,2)
stem(y(1:256));
title('FIR Output Sequence');
xlabel('n')
end
编辑:作为进一步的测试,我给函数作为信号输入一个由 1 后跟 1023 个零构成的单位脉冲,并设置 fd=1/3。我希望将相同的脉冲作为输出延迟所需的量,但我得到的是输入的非延迟和按比例缩小的版本,如下图所示。该函数返回 i0=24 和 bw=0.9033。


