第1讲:信号与系统概述

一、引言

信号与系统是现代工程和科学的核心基础课程之一。从通信系统到控制系统,从图像处理到语音识别,信号处理技术无处不在。而随着人工智能(AI)的快速发展,信号处理与AI的结合正在成为推动技术进步的关键力量。本节课将从基础概念入手,探讨信号与系统的基本定义、分类,并结合人工智能中的典型应用案例,帮助大家建立对这门课程的整体认知。


二、信号的定义与分类

(一)信号的定义

信号是信息的载体,它通过某种形式(如电信号、声信号、光信号等)传递信息。在数学上,信号可以表示为一个或多个变量的函数。例如:

  • 连续时间信号:用函数 x ( t ) x(t) x(t) 表示,其中 t t t 是连续的时间变量。
  • 离散时间信号:用函数 x [ n ] x[n] x[n] 表示,其中 n n n 是离散的整数时间点。

公式示例
连续时间正弦信号:
x ( t ) = A sin ⁡ ( 2 π f t + ϕ ) x(t) = A \sin(2\pi f t + \phi) x(t)=Asin(2πft+ϕ)
其中, A A A 为振幅, f f f 为频率, ϕ \phi ϕ 为相位。


(二)信号的分类

根据不同的标准,信号可以分为多种类型:

1. 按确定性分
  • 确定信号:可以用明确的数学表达式描述。例如,正弦波、方波等。
  • 随机信号:具有不确定性,通常用统计特性描述。例如,噪声信号、语音信号等。
2. 按时间域分
  • 连续时间信号:信号在所有时间点都有定义(如模拟信号)。
  • 离散时间信号:仅在某些特定时间点有定义(如数字信号)。
3. 按周期性分
  • 周期信号:满足条件
    x ( t ) = x ( t + T ) , ∀ t x(t) = x(t + T), \quad \forall t x(t)=x(t+T),t
    其中 T T T 为周期。
  • 非周期信号:不满足上述条件的信号。
4. 按能量与功率分
  • 能量信号:总能量有限,平均功率为零。
    E = ∫ − ∞ ∞ ∣ x ( t ) ∣ 2 d t < ∞ E = \int_{-\infty}^{\infty} |x(t)|^2 dt < \infty E=x(t)2dt<
  • 功率信号:平均功率有限,总能量无限。
    P = lim ⁡ T → ∞ 1 2 T ∫ − T T ∣ x ( t ) ∣ 2 d t < ∞ P = \lim_{T \to \infty} \frac{1}{2T} \int_{-T}^{T} |x(t)|^2 dt < \infty P=Tlim2T1TTx(t)2dt<

(三)人工智能中的信号处理需求

在人工智能领域,信号处理是许多关键技术的基础。例如:

  1. 语音识别:将语音信号转换为文本,依赖于对音频信号的频谱分析和特征提取。
  2. 图像处理:图像作为二维信号,需要通过滤波、边缘检测等技术进行增强和分析。
  3. 时间序列预测:在金融、气象等领域,通过分析时间序列信号预测未来趋势。
  4. 传感器数据处理:物联网设备产生的传感器信号(如温度、加速度)需要实时分析和处理。

案例
在卷积神经网络(CNN)中,图像被表示为二维离散信号,通过卷积操作提取局部特征。这一过程本质上是对图像信号的时域(空间域)处理。


三、系统的概念与分类

(一)系统的定义

系统是指对输入信号进行某种变换以产生输出信号的过程或装置。它可以是物理设备(如滤波器、放大器),也可以是抽象的数学模型(如微分方程、差分方程)。

公式示例
线性时不变系统(LTI)的输出 y ( t ) y(t) y(t) 可表示为输入 x ( t ) x(t) x(t) 与系统冲激响应 h ( t ) h(t) h(t) 的卷积:
y ( t ) = x ( t ) ∗ h ( t ) = ∫ − ∞ ∞ x ( τ ) h ( t − τ ) d τ y(t) = x(t) * h(t) = \int_{-\infty}^{\infty} x(\tau) h(t - \tau) d\tau y(t)=x(t)h(t)=x(τ)h(tτ)dτ


(二)系统的分类

1. 线性与非线性系统
  • 线性系统:满足叠加原理。若输入分别为 x 1 ( t ) x_1(t) x1(t) x 2 ( t ) x_2(t) x2(t),对应的输出分别为 y 1 ( t ) y_1(t) y1(t) y 2 ( t ) y_2(t) y2(t),则当输入为 a x 1 ( t ) + b x 2 ( t ) a x_1(t) + b x_2(t) ax1(t)+bx2(t) 时,输出应为 a y 1 ( t ) + b y 2 ( t ) a y_1(t) + b y_2(t) ay1(t)+by2(t),其中 a a a b b b 为任意常数。
  • 非线性系统:不满足叠加原理。
2. 时变与时不变系统
  • 时不变系统:若输入延迟 t 0 t_0 t0 秒,则输出也仅延迟 t 0 t_0 t0 秒,而不改变波形。
    x ( t − t 0 ) → y ( t − t 0 ) x(t - t_0) \rightarrow y(t - t_0) x(tt0)y(tt0)
3. 因果与非因果系统
  • 因果系统:输出只依赖于当前和过去的输入,不依赖未来的输入。
  • 非因果系统:输出依赖未来的输入(理论上存在,但物理上不可实现)。
4. 稳定与不稳定系统
  • 稳定系统:有界输入产生有界输出(BIBO稳定)。
    ∣ x ( t ) ∣ ≤ M x < ∞ ⇒ ∣ y ( t ) ∣ ≤ M y < ∞ |x(t)| \leq M_x < \infty \Rightarrow |y(t)| \leq M_y < \infty x(t)Mx<y(t)My<
  • 不稳定系统:不满足BIBO条件。

(三)人工智能中的系统建模

在AI中,系统建模通常通过神经网络实现。例如:

  1. 卷积神经网络(CNN):模拟线性时不变系统的卷积操作,用于图像处理。
  2. 循环神经网络(RNN):处理序列信号,模拟时序系统的动态行为。
  3. 生成对抗网络(GAN):通过生成器和判别器的交互,构建复杂的信号生成系统。

案例
在语音合成中,WaveNet 网络通过建模音频信号的时序特征,生成高质量的语音信号。其核心是通过堆叠卷积层和残差连接,模拟信号的动态变化过程。


四、Python基础与信号可视化

为了更好地理解信号与系统,掌握一些基本的编程技能是必要的。Python作为一种强大的编程语言,因其简洁性和丰富的库支持,成为了信号处理研究的理想选择。

(一)生成并绘制正弦信号

import numpy as np
import matplotlib.pyplot as plt

# 参数设置
fs = 1000  # 采样频率 (Hz)
t = np.arange(0, 1, 1/fs)  # 时间向量
f = 5  # 正弦波频率 (Hz)

# 生成正弦波
x = np.sin(2 * np.pi * f * t)

# 绘制图形
plt.plot(t, x)
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title('Sine Wave')
plt.grid(True)
plt.show()

(二)AI中的信号处理案例

以下是一个简单的AI驱动信号处理案例(使用PyTorch实现噪声抑制):

import torch
import torch.nn as nn

# 定义简单的神经网络模型
class DenoiseNet(nn.Module):
    def __init__(self):
        super(DenoiseNet, self).__init__()
        self.conv1 = nn.Conv1d(1, 16, kernel_size=3, padding=1)
        self.conv2 = nn.Conv1d(16, 1, kernel_size=3, padding=1)
    
    def forward(self, x):
        x = torch.relu(self.conv1(x))
        x = self.conv2(x)
        return x

# 生成噪声信号
def add_noise(signal, snr_db=10):
    snr = 10 ** (snr_db / 10)
    noise_power = np.var(signal) / snr
    noise = np.random.normal(0, np.sqrt(noise_power), signal.shape)
    return signal + noise

# 示例:生成正弦信号并添加噪声
fs = 1000
t = np.linspace(0, 1, fs)
clean_signal = np.sin(2 * np.pi * 5 * t)
noisy_signal = add_noise(clean_signal)

# 转换为PyTorch张量
clean_tensor = torch.tensor(clean_signal, dtype=torch.float32).unsqueeze(0).unsqueeze(0)
noisy_tensor = torch.tensor(noisy_signal, dtype=torch.float32).unsqueeze(0).unsqueeze(0)

# 初始化模型并训练
model = DenoiseNet()
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

# 训练循环(简化版)
for epoch in range(100):
    optimizer.zero_grad()
    output = model(noisy_tensor)
    loss = criterion(output, clean_tensor)
    loss.backward()
    optimizer.step()

# 去噪后的信号
denoised_signal = model(noisy_tensor).squeeze().detach().numpy()

五、总结

本节课介绍了信号与系统的基本概念及其分类,并探讨了它们在人工智能领域的应用。通过Python代码示例,我们展示了如何生成和处理信号,并初步了解了AI驱动的信号处理方法。接下来,我们将深入探讨信号的时域分析方法以及它们在AI中的应用实例。


六、课后思考题

  1. 为什么在人工智能中需要区分能量信号和功率信号?
  2. 卷积神经网络(CNN)与信号处理中的卷积操作有何异同?
  3. 试举一个实际应用场景,说明时不变系统的意义。

七、参考文献

  1. 清华大学出版社《信号与系统(第3版)》
  2. 中国大学MOOC《信号与系统》课程大纲
  3. PyTorch官方文档

通过本节课的学习,相信你已经对信号与系统的基本概念有了初步了解,并开始感受到它们与人工智能的紧密联系。在接下来的课程中,我们将逐步深入,探索更多有趣的理论和实践内容。敬请期待!

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐