一般步骤:
1.先写出序列xn=[ ] 对于分段序列,我没有使用表达式的形式描述,而是直接写计算的结果
2.Xk=fft(xn,N) N为变换区间
3.k=0:N-1
wk=2*k/N 保证x轴在0-2区间
4.输出频谱图形
x轴为wk,y轴为Xk的绝对值
如果stem中只写x轴和y轴的内容,没有最后一项 ' . ' ,就代表输出的频谱波形中,冲激的上方是圈而不是实心点
接下来举几个例题:(均来自高西全,丁玉美编著《数字信号处理》(第五版)实验三)
(1)对以下序列进行谱分析:
x1(n)=R4(n)
选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印其幅频特性曲线。
代码如下:
x1n=[1,1,1,1];
X1k8=fft(x1n,8);
k=0:7;
wk=2*k/8;
subplot(3,2,1);
stem(wk,abs(X1k8),'.');
title('N为8时x1n的幅频特性曲线');
x1n=[1,1,1,1];
X1k16=fft(x1n,16);
k=0:15;
wk=2*k/16;
subplot(3,2,2);
stem(wk,abs(X1k16),'.');
title('N为16时x1n的幅频特性曲线');
x2n=[1,2,3,4,4,3,2,1];
X2k8=fft(x2n,8);
k=0:7;
wk=2*k/8;
subplot(3,2,3);
stem(wk,abs(X2k8),'.');
title('N为8时x2n的幅频特性曲线');
x2n=[1,2,3,4,4,3,2,1];
X2k16=fft(x2n,16);
k=0:15;
wk=2*k/16;
subplot(3,2,4);
stem(wk,abs(X2k16),'.');
title('N为16时x2n的幅频特性曲线');
x3n=[4,3,2,1,1,2,3,4];
X3k8=fft(x3n,8);
k=0:7;
wk=2*k/8;
subplot(3,2,5);
stem(wk,abs(X3k8),'.');
title('N为8时x3n的幅频特性曲线');
x3n=[4,3,2,1,1,2,3,4];
X3k16=fft(x3n,16);
k=0:15;
wk=2*k/16;
subplot(3,2,6);
stem(wk,abs(X3k16),'.');
title('N为16时x3n的幅频特性曲线');
(2)对以下周期序列进行谱分析:
x4(n)=cos(Π*n/4)
x5(n)=cos(Π*n/4)+cos(Π*n/8)
选择FFT的变换区间N为8和16两种情况分别对以上序列进行频谱分析。
代码如下:
x4n=cos(pi/4*n);
X4k8=fft(x4n,8);
k=0:7;
n=0:7;
wk=2*k/8;
subplot(2,2,1);
stem(wk,abs(X4k8));
title('N为8时x4n的幅频特性曲线');
x4n=cos(pi/4*n);
X4k16=fft(x4n,16);
k=0:15;
n=0:15;
wk=2*k/16;
subplot(2,2,2);
stem(wk,abs(X4k16));
title('N为16时x4n的幅频特性曲线');
x5n=cos(pi/4*n)+cos(pi/8*n);
X5k8=fft(x5n,8);
k=0:7;
n=0:7;
wk=2*k/8;
subplot(2,2,3);
stem(wk,abs(X5k8));
title('N为8时x5n的幅频特性曲线');
x5n=cos(pi/4*n)+cos(pi/8*n);
X5k16=fft(x5n,16);
k=0:15;
n=0:15;
wk=2*k/16;
subplot(2,2,4);
stem(wk,abs(X5k16));
title('N为16时x5n的幅频特性曲线');
(3)对模拟周期信号进行谱分析:
x6(t)=cos(8*Π*t)+cos(16*Π*t)+cos(20*Π*t)
选择采样频率Fs=Hz,对变换区间N=16,32,三种情况进行谱分析。
代码如下:
N=16;
n=0:N-1;
Fs=;
T=1/Fs;
Tp=N*T;
F=1/Tp;
x6t=cos(8*pi*n*T) + cos(16*pi*n*T) + cos(20*pi*n*T);
X6k16=fft(x6t);
X6k16=fftshift(X6k16);
k=-N/2:N/2-1;
fk=k*F;
subplot(3,1,1);
stem(fk,abs(X6k16),'.');
title('N为16时x6n的幅频特性曲线');
N=32;
n=0:N-1;
Fs=;
T=1/Fs;
Tp=N*T;
F=1/Tp;
x6t=cos(8*pi*n*T) + cos(16*pi*n*T) + cos(20*pi*n*T);
X6k32=fft(x6t);
X6k32=fftshift(X6k32);
k=-N/2:N/2-1;
fk=k*F;
subplot(3,1,2);
stem(fk,abs(X6k32),'.');
title('N为32时x6n的幅频特性曲线');
N=;
n=0:N-1;
Fs=;
T=1/Fs;
Tp=N*T;
F=1/Tp;
x6t=cos(8*pi*n*T) + cos(16*pi*n*T) + cos(20*pi*n*T);
X6k=fft(x6t);
X6k=fftshift(X6k);
k=-N/2:N/2-1;
fk=k*F;
subplot(3,1,3);
stem(fk,abs(X6k),'.');
title('N为时x6n的幅频特性曲线');