当前位置: 首页 > article >正文

卷积运算和卷积定理

卷积运算

卷积运算是信号处理、图像处理和深度学习中的核心概念,用于表示两个函数之间的相互作用。它将一个函数通过滑动窗口的方式与另一个函数结合,产生一个新的函数,反映两者的重叠程度。


1. 定义
  • 连续信号的卷积: 给定两个连续函数 f(t) 和 g(t) ,它们的卷积定义为:

    (f * g)(t) = \int_{-\infty}^{+\infty} f(\tau) g(t - \tau) d\tau

    其中:

    • t 是输出信号的时间变量。
    • \tau是中间变量,用于计算 f 和 g 的重叠。
  • 离散信号的卷积: 给定两个离散序列 f[n]  和 g[n] ,它们的卷积定义为:

    (f * g)[n] = \sum_{k=-\infty}^{+\infty} f[k] \cdot g[n-k]

    在实际计算中,信号长度通常有限,求和区间取有限范围。


2. 卷积运算的直观理解

卷积可以理解为:

  1. 将一个信号 g(t)  翻转后平移,与另一个信号 f(t) 逐点相乘并求和,得到新的信号。
  2. 在图像处理中,卷积用于提取特征,比如边缘检测、模糊化等。

卷积定理

卷积定理揭示了卷积运算在时域和频域之间的重要关系,是信号处理和傅里叶分析的重要理论。


1. 定理陈述

卷积定理说明:两个信号在时域中的卷积等价于它们在频域中的乘积

  • 连续信号的卷积定理: 如果 F(ω) 和 G(ω) 分别是 f(t)  和 g(t) 的傅里叶变换,则有:

    \mathcal{F}\{f(t) * g(t)\} = F(\omega) \cdot G(\omega)

    即,时域卷积对应于频域相乘。

  • 离散信号的卷积定理: 如果 F[k] 和 G[k] 分别是 f[n] 和 g[n] 的离散傅里叶变换(DFT),则:

    \text{DFT}\{f[n] * g[n]\} = F[k] \cdot G[k]DFT

    同样,时域卷积等价于频域相乘。


2. 定理的逆向形式

卷积定理的逆向形式: 两个信号在频域中的卷积等价于它们在时域中的乘积

\mathcal{F}^{-1}\{F(\omega) * G(\omega)\} = f(t) \cdot g(t)

卷积的计算示例

1. 离散卷积的计算

给定两个序列:

f[n] = [1, 2, 3], \quad g[n] = [0, 1, 0.5]

计算它们的离散卷积:

(f * g)[n] = \sum_{k=-\infty}^{+\infty} f[k] \cdot g[n-k]

手动计算结果:

  • 对 n=0 : (f * g)[0] = 1 \cdot 0 + 2 \cdot 0 + 3 \cdot 0 = 0
  • 对 n=1 : (f * g)[1] = 1 \cdot 1 + 2 \cdot 0 + 3 \cdot 0 = 1
  • 对 n=2 : (f * g)[2] = 1 \cdot 0.5 + 2 \cdot 1 + 3 \cdot 0 = 2.5
  • 对 n=3 : (f * g)[3] = 1 \cdot 0 + 2 \cdot 0.5 + 3 \cdot 1 = 4
  • 对 n=4 : (f * g)[4] = 1 \cdot 0 + 2 \cdot 0 + 3 \cdot 0.5 = 1.5

最终结果:

(f * g) = [0, 1, 2.5,4, 1.5]

2. Python实现卷积

使用numpy库计算卷积:

import numpy as np

# 定义两个信号
f = np.array([1, 2, 3])
g = np.array([0, 1, 0.5])

# 计算卷积
result = np.convolve(f, g, mode='full')
print("卷积结果:", result)


http://www.kler.cn/a/403924.html

相关文章:

  • Redis基本的全局命令
  • 好用的js组件库
  • ZYNQ-7020嵌入式系统学习笔记(1)——使用ARM核配置UART发送Helloworld
  • 算法编程题-排序
  • Python设计模式详解之1 —— 单例模式
  • Spring Web入门练习
  • 网络编程多线程服务器应用
  • RNN数学公式推导
  • 单例模式与QT中的C++实现
  • Layui Table 行号
  • uniapp将图片url转换成base64支持app和h5
  • Django项目 | 实现用户注册和登录时的手机号验证
  • OBOO鸥柏28.6寸液晶广告屏:创新技术引领智能显示新时代
  • Fibonacci数列(斐波那契数列或兔子数列)
  • 算法设计与分析-上机实验10
  • 鸿蒙网络编程系列50-仓颉版TCP回声服务器示例
  • unity li2cpp逆向原理是什么?
  • 多路归并+set去重
  • C++详细笔记(六)string库
  • PHP实现双向队列
  • C++结构型设计模式之适配器模式概述
  • HTML和CSS 表单、表格练习
  • es写入磁盘的过程以及相关优化
  • 极简AI工具箱网站开源啦!
  • vue3+elementui-plus el-dialog全局配置点击空白处不关闭弹窗
  • iOS屏幕共享技术实践