一、谱分析概念
信号的谱分析就是计算信号的频谱(信号的傅里叶变换),通过信号研究分析信号特性。信号频谱是连续的,不能用数字信号处理方法计算,按频域采样定理,序列的DFT
完整反映了频谱信息,所以可以通过DFT
进行谱分析。
二 DFT对离散序列进行谱分析
2.1 非周期序列进行谱分析
傅里叶变换定义:
X(ejw)=FT[x(n)]=n=0∑N−1x(n)e−jwn
DFT
定义:
X(k)=DFT[x(n)]=n=0∑N−1x(n)e−jN2πkn(K=0,1,...,N−1)
有限长序列x(n)的N点离散傅里叶变换X(k)是x(n)的傅里叶变换X(ejw)在一个周期上的N点等间隔采样值,DFT满足频域采样定理。由频域采样定理可知,X(k)包含了频谱X(ejw)的全部信息,因此,求x(n)的DFT就可以分析它的频谱了。即通过DFT进行谱分析。
2.2 周期序列进行谱分析
以周期为N的周期序列x(n)进行DFS,以所求出的DFS系数作为各谐波分量的幅度形成其频谱函数:
X(ejw)=FT[x(n)]=N2πk=−∞∑∞X(k)δ(w−N2πk)
其中X(k)=DFT[x(n)]=∑n=0N−1x(n)e−jN2πkn。截取x(n)的整数个周期做DFT,也可以获得x(n)频谱结构。截取M等于x(n)的整数个周期,即M=mN,m为正整数,则:
XM(k)={mX(mk)0mk=整数mk=整数
2.3 连续信号进行谱分析
对连续信号Xa(t),为了利用DFT分析其频谱,需要将其离散化,若信号持续时间无限长,还需要对它进行截短近似。所以从严格意义上讲用DFT对信号进行谱分析,都是某种意义上的近似。
Xa(K)=Tn∑N−1x(n)e−jN2πkn=T⋅DFT(x(n))
三、FFT进行频谱分析
3.1 练习一
绘制下面信号的8点FFT:
X3(n)=⎩⎪⎪⎨⎪⎪⎧4−nn−300≤n≤34≤n≤7其他n
1 2 3 4 5 6 7 8 9 10 11 12
| N = 8; x = [4:-1:1 1:4]; xk = fft(x,N);
figure; subplot(1, 2, 1); stem(0:length(x)-1, x, "."); title("x3的波形");
subplot(1, 2, 2); stem(0:N-1, xk, "."); title("x3的8点FFT");
|

3.2 练习二
绘制下面信号的8点和16点FFT:
x1(n)=R4(n)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| N1 = 8; N2 = 16;
x1 = [1 1 1 1 0 0 0 0]; xk8 = fft(x1, N1); xk16 = fft(x1, N2); xk8 = abs(xk8); xk16 = abs(xk16);
figure; subplot(2, 1, 1); stem(0:length(x1)-1, x1, "filled"); title("x1的波形"); subplot(2, 1, 2); stem(0:N1-1, xk8, "fill"); title("x1的8点FFT");
figure; subplot(2, 1, 1); stem(0:length(x1)-1, x1, "filled"); title("x1的波形"); subplot(2, 1, 2); stem(0:N2-1, xk16, "filled"); title("x1的16点FFT");
|


3.3 练习三
绘制下面信号的8点和16点FFT:
x2(n)=⎩⎪⎪⎨⎪⎪⎧n+18−n0,其他n0≤n≤34≤n≤7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| x = [1:4 4:-1:1]; N1 = 8; N2 = 16; X1 = abs(fft(x, 8)); X2 = abs(fft(x, 16));
figure; subplot(2, 1, 1); stem(0:length(x)-1, x, "filled"); title("x2的波形"); subplot(2, 1, 2); stem(0:N1-1, X1,"filled"); title("x2的8点FFT");
figure; subplot(2, 1, 1); stem(0:length(x)-1, x, "filled"); title("x2的波形"); subplot(2, 1, 2); stem(0:N2-1, X2,"filled"); title("x2的16点FFT");
|


3.4 练习四
绘制下面信号的8点和16点FFT:
x4(n)=cos(4πn)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| x = [0:pi:7*pi]; x1 = [0:pi:15*pi]; y = cos(x/4); y0 = cos(x1/4); N1 = 8; N2 = 16; y1 = fft(y, N1); y2 = fft(y0, N2);
figure; subplot(2, 1, 1); stem(x/pi, y, "."); title("x4的波形"); subplot(2, 1, 2); stem(0:N1-1, y1, "."); title("x4的8点FFT");
figure; subplot(2, 1, 1); stem(x1/pi, y0, "."); title("x4的波形"); subplot(2, 1, 2); stem(0:N2-1, y2, "."); title("x4的16点FFT");
|


3.5 练习五
对下面信号以fs=64(Hz)采样后做N=16、32、64点的FFT:
x6(n)=cos(8πt)+cos(16πt)+cos(20πt)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| clc; clear;
fs = 64; t = 1/fs;
N61 = 16; n61 = 0:N61-1; x61 = cos(8*pi*n61*t)+cos(16*pi*n61*t)+cos(20*pi*n61*t); X61 = fft(x61,N61); subplot(3,1,1); stem(0:length(x61)-1,x61,'.'); title('x6(n)的波形'); grid on; subplot(3,1,2); stem(0:N61-1,abs(X61),'.'); title('x6(n)的16点FFT幅频'); grid on; subplot(3,1,3); stem(0:N61-1,angle(X61),'.'); title('x6(n)的16点FFT相频'); grid on; figure;
N62 = 32; n62 = 0:N62-1; x62 = cos(8*pi*n62*t)+cos(16*pi*n62*t)+cos(20*pi*n62*t); X62 = fft(x62,N62); subplot(3,1,1); stem(0:length(x62)-1,x62,'.'); title('x6(n)的波形'); grid on; subplot(3,1,2); stem(0:N62-1,abs(X62),'.'); title('x6(n)的32点FFT幅频'); grid on; subplot(3,1,3); stem(0:N62-1,angle(X62),'.'); title('x6(n)的32点FFT相频'); grid on; figure;
N6 = 64; n6 = 0:N6-1; x6 = cos(8*pi*n6*t)+cos(16*pi*n6*t)+cos(20*pi*n6*t); X6 = fft(x6,N6); subplot(3,1,1); stem(0:length(x6)-1,x6,'.'); title('x6(n)的波形'); grid on; subplot(3,1,2); stem(0:N6-1,abs(X6),'.'); title('x6(n)的64点FFT幅频'); grid on; subplot(3,1,3); stem(0:N6-1,angle(X6),'.'); title('x6(n)的64点FFT相频'); grid on;
|


