| |
DFT末尾补零效果
原来x(n)的DFT为X(k),在末尾补零rN个后成为y(n),则
Y(k) = X(k/r),在中间相当于插值,在频域插值。
然后,末尾补零x(n)的Z变换和DTFT是不会改变的仍为X(z), X(exp(jw))
% padding zero in the end, check effect to Xk
clc; clear;
f1=2.67;
f2=3.75;
f3=6.75;
fs=20;
N = 16;
n = 0:N-1;
x = sin(2*pi*f1*n/fs) + sin(2*pi*f2*n/fs) + sin(2*pi*f3*n/fs);
X = fft(x, N);
X = abs(X);
k = fs/N * (0:N-1); %fs/N是频域分辨率
stem(k, X(1:N), 'o', 'r'); hold on
% padding with rN zeros
r = 2;
x(N+1:r*N) = 0;
X = fft(x, r*N);
X = abs(X);
k = fs/(r*N) * (0:r*N-1);
stem(k, X(1:r*N), '*'); hold on
% padding with rN zeros
r = 4;
x(N+1:r*N) = 0;
X = fft(x, r*N);
X = abs(X);
k = fs/(r*N) * (0:r*N-1);
stem(k, X(1:r*N), '>', 'y');
序列插值之后变化
序列插值之后变化
% Interpolation 0, DFT effect
clc; clear;
f1=2.67;
f2=3.75;
fs=20;
N = 16;
n = 0:N-1;
x = sin(2*pi*f1*n/fs) + sin(2*pi*f2*n/fs);
X = fft(x, N);
X = abs(X);
k = fs/N * (0:N-1); %fs/N是频域分辨率
subplot(2,1,1); stem(k, X(1:N), 'o', 'r');
% 内插0,两个数之间插入1个0
xi = zeros(1, 2*N);
for i = 1:2:2*N
xi(i) = x((i+1)/2);
end
X = fft(xi, 2*N);
X = abs(X);
k = fs/(2*N) * (0:2*N-1); %fs/N是频域分辨率
subplot(2,1,2);stem(k, X(1:2*N), 'o', 'r'); title('内插1个0后频谱');