### 数字信号处理实验知识点详解
#### 一、实验背景与目标
本次实验主要围绕《数字信号处理》课程展开,旨在通过实际操作加深学生对于数字信号处理基础理论的理解,并掌握MATLAB这一工具在数字信号处理中的应用。实验分为三个部分:采样与混叠现象的观察、离散时间系统的时不变性分析以及利用FIR滤波器进行信号滤波。
#### 二、实验内容详解
##### (一)采样与混叠现象
**1. 目的与任务**
- **观察采样引起的混叠现象**:通过对模拟信号进行采样,理解当采样频率低于奈奎斯特频率时,会出现信号混叠的现象。
- **熟悉MATLAB的基本使用**:包括信号的产生、矢量运算等基础操作。
- **了解系统响应**:包括input-on暂态、input-off暂态和稳态响应的概念。
**2. 内容**
- **模拟信号**: \( x(t) = \cos(5\pi t) + 4\sin(2\pi t)\sin(3\pi t) \)。
- **采样频率**: 3KHz。
- **采样重建信号**: 手工计算与MATLAB绘制波形对比。
- **MATLAB代码**:
```matlab
fs1 = 50; fs2 = 3;
t1 = 0:1/fs1:6;
x = cos(5*pi*t1) + 4*sin(2*pi*t1).*sin(3*pi*t1);
xa = cos(pi*t1);
t2 = 0:1/fs2:6;
x_sample = cos(5*pi*t2) + 4*sin(2*pi*t2).*sin(3*pi*t2);
xa_sample = cos(5*pi*t2) + 4*sin(2*pi*t2).*sin(3*pi*t2);
plot(t1, x, 'r', t1, xa, 'b');
hold on;
stem(t2, x_sample, 'ro'), stem(t2, xa_sample, 'bx');
legend('x(t)', 'xa(t)', 'x(nT)', 'xa(nT)');
xlabel('t(ms)');
```
##### (二)离散时间系统的时不变性
**1. 目的与任务**
- **判断系统的时不变性**:通过改变输入信号的时间位置,观察输出的变化情况。
- **MATLAB代码**:
```matlab
D = 30; N = 500;
n = 1:N;
x = sin(2*pi/100*n);
for n = 1:N+D
if n-D <= 0
xD(n) = 0;
else
xD(n) = x(n-D);
end
end
figure;
subplot(2,1,1);
plot(1:N, x, 'r:', 1:length(xD), xD, 'b');
legend('x(n)', 'xD(n)');
xlabel('n');
```
**2. 分析**
- **输入信号**: \( x(n) = \sin(\frac{2\pi}{100}n) \)。
- **延迟后的信号**: \( x_D(n) = x(n - D) \)。
- **系统的响应**: 对输入信号\( x(n) \)的每第二个样本进行采样。
##### (三)FIR滤波器的应用
**1. 目的与任务**
- **利用卷积计算输出**:使用MATLAB内置的`conv`函数计算信号通过FIR滤波器的输出。
- **观察不同阶段的响应**:包括input-on暂态、input-off暂态和稳态响应。
**2. 内容**
- **滤波器单位脉冲响应**:
- 第一个滤波器: \( h_1(n) = 0.25(0.75)^n \),其中\( 0 \leq n \leq 14 \)。
- 第二个滤波器: \( h_2(n) = [1, 5, 10, 10, 5, 1]/5 \)。
- **输入信号**:
- 周期方波: \( x(n) \)在\( 10 \leq n \leq 24 \)区间内为0.25,在\( 49 \leq n \leq 64 \)区间内为-0.25。
- **MATLAB代码**:
```matlab
% 滤波器单位脉冲响应
h1 = 0.25*(0.75).^(0:14);
h2 = [1 5 10 10 5 1]/5;
% 输入信号
x = zeros(1, 100);
x(10:24) = 0.25;
x(49:64) = -0.25;
% 计算输出
y1 = conv(x, h1);
y2 = conv(x, h2);
% 绘制波形
figure;
subplot(2,1,1);
plot(y1);
title('Output of the first filter');
subplot(2,1,2);
plot(y2);
title('Output of the second filter');
```
#### 三、实验总结
通过本次实验,我们不仅加深了对数字信号处理中关键概念如采样定理、时不变性的理解,还学会了如何使用MATLAB工具进行信号处理操作。特别是在对FIR滤波器的使用上,我们不仅掌握了如何利用卷积计算信号经过滤波器后的输出,还进一步观察了不同阶段的系统响应,这对于理解和设计实际中的数字信号处理系统具有重要意义。此外,实验中MATLAB的运用也极大地提高了我们的实践能力和编程技巧。