補零的在很多時候都能用到,然而在不一樣的位置補零產生的影響是不一樣的。
補零主要有前面補零,後面補零和中間補零。
我們設原序列為x(n),前面補零後的序列為xq(n) 後面補零後的序列為xh(n) 中間補零後的序列為xz(n) ;
四個序列的DTFT分別為X(jw),XQ(jw),XH(jw),XZ(jw) ;
四個序列的DFT分別為X(K),XQ(k),XH(k),XZ(k)。
(1)後面補零:這是就簡單的情況,由離散時間傅裡葉變換公式,可以知道前面補零和不補零產生的頻譜是一樣的。即X(jw)=XH(jw),又根據DFT是對離散時間傅裡葉變換頻譜上的採樣,即X(k)=X(jw)在w=2π/N*k,
得:X(k)和XH(k)的差別就是XH(k)相對於X(k)多採樣了幾個點,
原因是X(K)是X(jw)在w=2π/N*k的採樣值,而XH(k)是XH(jw){也就是X(jw)}
在w=2π/M*k(M>N)的採樣值。
(2)前面補零:關於此時DTFT,XQ(jw)=X(jw)*e^(-jwM)(M表示補零的個數),就是XQ(jw)和X(jw)幅值是一樣的,
區別在於,有相位的位移。結合DFT是DTFT頻域上的採樣(X(k)=X(jw)在w=2π/N*k)
XQ(k),X(k)幅值上也是一樣的,但相位有位移。
(3)中間補零:此時的DTFT,XZ(jwL)=X(jw)(L表示相鄰中間插入0的個數),我們知道XZ(jw)是以2π為周期的,
所以看出XZ(jw)是以2π/Lw為周期的。同理,DFT時XZ(k)=X(Lk),相當於X3(k)對X(k)採樣,
採樣間隔為L+1。即不論幅值還是相位XZ(k)都是X(Lk)的採樣。所以在相同地區中,XZ(k)的
周期數是X(k)的L+1倍。
下面是用matlab進行驗證:
clear all
close all
clc
%總共補20個零
n=0:9;
x=cos(0.32*pi*n)+cos(0.36*pi*n);
y=fft(x,10);
subplot(211)
stem(0:9,abs(y));
xlabel('k');
ylabel('幅值')
title('原始序列');
subplot(212)
xw=angle(y)*180/pi;
stem(0:9,xw);
xlabel('k');
ylabel('相位')
title('原始序列');
figure
%% 後面補零
x1=[x zeros(1,20)];
y1=fft(x1,30);
subplot(321)
stem(0:29,abs(y1)); %後面補零,幅值
xlabel('k');
ylabel('幅值')
title('後面補零');
subplot(322)
xw1=angle(y1)*180/pi;
stem(0:29,xw1); %後面補零,相位
xlabel('k');
ylabel('相位')
title('後面補零');
%% 前面補零
x2=[zeros(1,20) x];
y2=fft(x2,30);
subplot(323)
stem(0:29,abs(y2)); %前面補零,幅值
xlabel('k');
ylabel('幅值')
title('前面補零');
subplot(324)
xw2=angle(y2)*180/pi;
stem(0:29,xw2); %前面補零,相位
xlabel('k');
ylabel('相位')
title('前面補零');
%% 中間補零
x3=zeros(1,30);
x3(3*n+1)=x(n+1);
y3=fft(x3,30);
subplot(325)
stem(0:29,abs(y3)); %中間補零,幅值
axis([0 30 0 15])
xlabel('k');
ylabel('幅值')
title('中間補零');
subplot(326)
xw3=angle(y3)*180/pi;
stem(0:29,xw3); %中間補零,相位
xlabel('k');
ylabel('相位')
title('中間補零');
(1)可以明顯看到,前面補零,後面補零的幅值是一樣的,相位是有位移性(主要性狀沒變);而且和原始序列相比,相當於多採樣了幾個點。
(2)中間補零的話,也可看出,幅值和相位均是後面補零的採樣值(每個3個,因為L=2)。並且周期數也是它們的三倍。