实验3 频谱泄漏

实验3 频谱泄漏

3.1 实验目的

(1)理解这里的误差(偏差)概念,是指处理之后相对于处理之前的变化。

(2)理解 $x(n)$ 如何通过DFT来反映表达 $x(t)$ 的频谱情况。

(3)频谱泄漏是指离散序列 $x(n)$ DFT相对于原信号 $x(t)$ 在频谱上多显示出的频率成分。

(4)产生频谱泄漏的根本原因,是对原信号 $x(t)$ 的截短;信号截短之后,相对于截短之前的原信号一定发生泄漏,与时域离散化无关,与DFT无关。

(6)理解DFT对频谱泄漏的呈现形态,与DTFT频谱离散化的频率取样点位置方式有关。

3.2 实验原理

1)对 $x(t)$ 做CFT,记录观察频谱的幅频特性;

2)对 $x(t)$ 在时域上截短,记录观察频谱的幅频特性;

3)对截短后连续信号离散化得到 $x(n)$,对 $x(n)$ 做DTFT,记录观察幅频特性。

3.3 实验内容

设 $x(t)=e^{j2\pi f_1 t}+e^{j2\pi f_2 t}$,式中 $f_1=24Hz$,$f_2=60Hz$。

(1)对 $x(t)$ 做CFT并进行幅度归一化,给出 $X(j\Omega)$ 表达式,说明其幅频特性。

(2)判断 $x(t)$ 是否为周期函数。如果是,则确定 $x(t)$ 的最小周期 $T_0$ 和基频 $\Omega_0$,对 $x(t)$ 进行FS展开,给出 $X(m\Omega_0)$ 表达式,说明其幅频特性,并与上述CFT的结果进行比较讨论。

(3)对 $x(t)$ 用矩形窗截短,得到 $x_1(t)$。矩形窗宽度的选择,分为两种情况:矩形窗宽度等于 $x(t)$ 最小周期 $T_0$ 的整倍数(记为 $R_1$);矩形窗宽度不等于 $x(t)$ 最小周期 $T_0$ 的整倍数(记为 $R_2$)。

在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(t)$ 分别做CFT,画出 $X_1(j\Omega)$ 的幅频特性曲线,并与 $X(j\Omega)$ 的幅频特性进行比较讨论。

(4)分别取 $f_{s1}$,$f_{s2}$,在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(t)$ 进行离散化,对取样序列 $x_1(n)$ 做DTFT。画出 $X_1(e^{j\omega})$ 幅频特性曲线(频域表示范围取两个周期),并与 $X(j\Omega)$ 和 $X_1(j\Omega)$ 的幅频特性进行比较讨论。其中:

$f_{s1}=\frac{1}{2T_0}$,$f_{s2}=\frac{1}{1.6T_0}$

(5)在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(n)$ 做DFT,画出 $X_1(k)$ 完整的幅频特性曲线($k=0,1,…,N-1$),并与 $X_1(e^{j\omega})$、$X(j\Omega)$ 和 $X_1(j\Omega)$ 的幅频特性进行比较讨论。

(6)在 $R_1$ 和 $R_2$ 两种宽度下,对 $x_1(n)$ 补两倍长度于自身的零值形成延长序列 $x_2(n)$。对 $x_2(n)$ 做DFT,画出 $X_2(k)$ 完整的幅频特性曲线($k=0,1,…,N-1$),并与 $X_1(k)$、$X_1(e^{j\omega})$、$X(j\Omega)$ 和 $X_1(j\Omega)$ 的幅频特性进行比较讨论。

3.4 仿真结果

3.svg

3.5 结果分析

(1) CFT 表达式与特性:

信号 $x(t) = e^{j2\pi f_1 t} + e^{j2\pi f_2 t}$。其 CFT 为:$$X(j\Omega) = 2\pi\delta(\Omega - 2\pi f_1) + 2\pi\delta(\Omega - 2\pi f_2)$$归一化幅度后,在 $24\text{Hz}$ 和 $60\text{Hz}$ 处有两个单位冲激。其幅频特性是离散的谱线。

(2) 周期性与 FS:

$f_1=24, f_2=60$,其比值为 $24/60 = 2/5$(有理数),故 $x(t)$ 是周期函数。

基频: $f_0 = \gcd(24, 60) = 12\text{Hz}$。

最小周期: $T_0 = 1/f_0 = 1/12 \approx 0.0833\text{s}$。

FS 展开: $x(t) = a_2 e^{j2\cdot 2\pi f_0 t} + a_5 e^{j5\cdot 2\pi f_0 t}$,其中系数 $a_2=1, a_5=1$。

比较: FS 系数 $X(m\Omega_0)$ 在基频倍数处取值,与 CFT 的冲激强度对应。

(3) 矩形窗截断 ($R_1$ vs $R_2$):

$R_1$ (整倍数周期):

频谱主瓣对准信号频率,旁瓣相互抵消,在对应频率处无能量泄漏。

$R_2$ (非整倍数周期):

发生频谱泄漏,波形不再是理想冲激,而是由 $sinc$ 函数叠加而成的波动。

(4) 采样与 DTFT:

采样频率 $f_{s1} = 1/(2T_0) = 6\text{Hz}$,显著低于信号频率($24\text{Hz}, 60\text{Hz}$),不满足采样定理,会发生严重的混叠 (Aliasing)。

(5) DFT 与 DTFT 的比较讨论:

$R_1$ 情况(周期整倍数截断):

由于截断长度是信号周期的整数倍,信号的频率成分恰好落在 DFT 的频率采样点(谱线)上。此时,主瓣峰值被准确采样,而所有旁瓣零点也恰好被采样,因此没有频谱泄漏,谱线清晰。

$R_2$ 情况(非整倍数截断):

信号频率不落在 DFT 的样点上,主瓣能量分散到相邻的频率轴上,产生频谱泄漏。在幅度谱上表现为原本的尖峰变宽,且基底抬高。

关系:

$X_1(k)$ 实际上是对连续谱 $X_1(e^{j\omega})$ 在 $[0, 2\pi]$ 范围内的 $N$ 点等间隔采样。

(6) 补零后的 DFT ($x_2(n)$) 讨论:

补零的作用:

对时域序列补零后进行 DFT,等效于在频域对 $X_1(e^{j\omega})$ 进行更细密的采样(插值)。

对比:

补零后的 $X_2(k)$ 谱线变得更密,包络更加平滑,更接近 DTFT 的连续曲线。

3.6 代码

 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
% 实验参数设置
f1 = 24; f2 = 60;
f0 = gcd(f1, f2); 
T0 = 1/f0;

% 情况 R1: 2个周期; 情况 R2: 2.5个周期
L1 = 2 * T0; 
L2 = 2.5 * T0;

fs = 1000; % 用于模拟连续信号的高采样率
t1 = 0:1/fs:L1;
t2 = 0:1/fs:L2;

x1 = exp(1j*2*pi*f1*t1) + exp(1j*2*pi*f2*t1);
x2 = exp(1j*2*pi*f1*t2) + exp(1j*2*pi*f2*t2);

figure('Color','w','Name','信号频谱分析');

% --- (3) 连续时间傅里叶变换 (CFT 模拟) ---
subplot(3,1,1);
N_fft = 4096;
X1_f = abs(fftshift(fft(x1, N_fft)));
freq = (-N_fft/2:N_fft/2-1)*(fs/N_fft);
plot(freq, X1_f/max(X1_f), 'b', 'DisplayName', 'R1 (整倍数)'); hold on;
X2_f = abs(fftshift(fft(x2, N_fft)));
plot(freq, X2_f/max(X2_f), 'r--', 'DisplayName', 'R2 (非整倍数)');
xlim([0 100]); grid on;
title('x_1(t) 的幅频特性 (CFT 模拟)');
xlabel('频率 (Hz)'); ylabel('归一化幅度');
legend;

% --- (5) DFT 分析 ---
% 设定采样频率 fs1 = 1/(2*T0) = 6Hz (会混叠)
% 这里为了演示,我们使用一个能观察到频谱的较高采样率,如 200Hz
fs_dft = 200; 
ts1 = 0:1/fs_dft:L1;
xs1 = exp(1j*2*pi*f1*ts1) + exp(1j*2*pi*f2*ts1);
N1 = length(xs1);
Xk1 = abs(fft(xs1));

subplot(3,1,2);
stem(0:N1-1, Xk1, 'filled');
title('x_1(n) 在 R_1 下的 DFT (k=0...N-1)');
xlabel('k (频率索引)'); ylabel('幅度');
grid on;

% --- (6) 补零后的 DFT ---
xs2 = [xs1, zeros(1, N1)]; % 补一倍零
N2 = length(xs2);
Xk2 = abs(fft(xs2));

subplot(3,1,3);
stem(0:N2-1, Xk2, 'Color', [0 .5 0]);
title('x_2(n) 补零后的 DFT (高密度谱采样)');
xlabel('k (频率索引)'); ylabel('幅度');
grid on;
使用 Hugo 构建