在样本之间添加 0 的信号的 FFT

信息处理 fft 自由度
2022-02-09 14:36:18

我从 HW 做以下问题时遇到了困难。给定一个你选择的序列,如果我们在每个样本之间添加一个 0,DFT 会发生什么?即如果我们有 x[n] = [A,B,C],我们把它变成 x[n] = [A,0,B,0,C,0]。

我最初的想法是采样频率会加倍,类似于我们在信号末尾进行零填充时。为了进行一些分析,我使用了以下 MATLAB 代码。

Fs = 300;            % Sampling frequency                    
T = 1/Fs;             % Sampling period       
L = 1500;             % Length of signal
t = (0:L-1)*T;        % Time vector

S = 0.7*sin(2*pi*50*t); %Signal - sine 50 Hz
z = zeros(1,3000);
z(1:2:end) = S; %Zero interp
z_fft = fft(z);
z_abs = abs(z_fft/(L*2));

P = z_abs(1:L*2/2+1);

P(2:end-1) = 2*P(2:end-1);
f = Fs*(0:(L*2/2))/(L*2);
plot(f,P);

产生以下情节: 在此处输入图像描述

这与我在序列末尾添加相同数量的 0 时的结果不同: 在此处输入图像描述

所以我很困惑,在每个样本之间添加 0 的结果是什么?这会使我的信号频率加倍吗?f = 125Hz 上的那个峰值呢?还是我在模拟中做错了什么?

谢谢你的时间!

1个回答

您可以使用扩展分析来推断当序列在其样本之间的人员为零时会发生什么。

x[n]成为你原来的长度N顺序。然后它的扩展2产生新序列y[n]长度2N

y[n]={x[n/2]   ,   n=2m     0   ,   otherwise

那么DTFT之间的关系Y(ejω)X(ejω)将会 :

Y(ejω)=X(ej2ω)

那么N点之间的DFT关系X[k]和 2N 点Y[k]将会

Y[k]=Y(ej2π2Nk)=X(ej22π2Nk)=X[k]   ,   k=0,1,...,2N1

换句话说,Y[k]将是两份X[k]