### 使用MATLAB实现卷积运算的知识点解析
#### 一、实验目的
1. **学习MATLAB语言的编程方法及熟悉MATLAB指令**:通过实际操作掌握MATLAB的基本语法和常用函数,例如如何定义变量、如何使用绘图命令等。
2. **深刻理解卷积运算**:理解卷积的基本概念及其在信号处理中的应用,特别是如何利用离散卷积来近似连续卷积。
#### 二、实验内容详解
1. **完成两个函数的卷积运算**:
- 给定函数\(f_1(t) = e^{-2t} u(t)\)和\(f_2(t) = u(t) - u(t-4)\),其中\(u(t)\)是单位阶跃函数。
- 使用MATLAB中的`conv`函数计算这两个函数的卷积\(f(t) = f_1(t) * f_2(t)\)。
- 在一个图形窗口中绘制三个函数的图形,并确保每个坐标系都有标题和坐标轴名称。
```matlab
p = 0.1;
t = 0:p:10;
f1 = exp(-2*t).*u(t);
f2 = u(t) - u(t-4);
f = conv(f1, f2);
subplot(1,3,1);
plot(t, f1, 'r');
title('f1(t) = e^{-2t}u(t)');
xlabel('t(sec)');
ylabel('f1(t)');
subplot(1,3,2);
plot(t, f2, 'g');
title('f2(t) = u(t) - u(t-4)');
xlabel('t(sec)');
ylabel('f2(t)');
subplot(1,3,3);
plot(f);
title('f(t) = f1(t) * f2(t)');
xlabel('t(sec)');
ylabel('f(t)');
```
2. **计算系统的零状态响应**:
- 给定系统模型为\(\ddot{y}(t) + 4\dot{y}(t) + 4y(t) = 3\dot{f}(t) + f(t)\),其中\(f(t) = e^{-t}u(t)\)。
- 首先将系统方程转换为传递函数的形式,然后使用MATLAB中的`tf`函数定义传递函数。
- 使用`lsim`函数计算零状态响应,并绘制波形。
```matlab
a = [1 4 4];
b = [1 3];
sys = tf(b, a);
td = 0.01;
t = 0:td:10;
f = exp(-t).*u(t);
y = lsim(sys, f, t);
plot(t, y);
xlabel('t(sec)');
ylabel('y(t)');
```
- 此外,还需要单独绘制输入波形图\(f(t)\)。
#### 三、实验原理
1. **离散卷积和**:在MATLAB中,使用`conv()`函数可以计算两个序列的离散卷积和。对于两个离散序列\(f_1(k)\)和\(f_2(k)\),其离散卷积和\(S(k)\)定义为:\[S(k) = \sum_{i=-\infty}^{\infty} f_1(i) f_2(k-i)\]。需要注意的是,`conv`函数只能给出序列值的大小,而不能直接给出卷积的X轴序号。
- **非零区间的确定**:对于两个序列\(f_1(k)\)和\(f_2(k)\)分别在\(n_1\)到\(n_2\)和\(m_1\)到\(m_2\)区间内非零,其长度分别为\(L_1 = n_2 - n_1 + 1\)和\(L_2 = m_2 - m_1 + 1\),则卷积结果\(S(k)\)的非零区间从\(n_1 + m_1\)开始,长度为\(L = L_1 + L_2 - 1\),即从\(n_1 + m_1\)到\(n_1 + m_1 + L - 1\)。
2. **连续卷积与离散卷积的关系**:计算机处理信号时,通常使用离散信号来近似连续信号。如果输入信号为\(f(t)\),则其可以通过一系列脉冲函数的线性组合来近似,即:\[f(t) \approx \sum_{k=-\infty}^{\infty} P_k(t - kT)\],其中\(P_k(t)\)表示脉冲函数,\(T\)为采样周期。对于线性时不变系统(LTI),其输出可表示为:\[y(t) = \int_{-\infty}^{\infty} h(\tau) f(t - \tau) d\tau\]。在离散化过程中,可以将连续积分转换为离散求和:\[y[k] = \sum_{n=-\infty}^{\infty} h[n] f[k - n]\]。随着采样周期\(T\)趋近于0,离散卷积结果将越来越接近连续卷积的结果。