热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

线性卷积、循环卷积、周期卷积的定义、计算方法及三者之间的关系

文章目录前言一、卷积的物理意义及性质1.物理意义2.卷积性质二、线性卷积定义及计算方法1.定义公式2.适用范围3.计算方法三、循环卷积定义及计算方法1.定义公式2.适用范围3.计算


文章目录

  • 前言
  • 一、卷积的物理意义及性质
    • 1. 物理意义
    • 2. 卷积性质
  • 二、线性卷积定义及计算方法
    • 1. 定义公式
    • 2. 适用范围
    • 3. 计算方法
  • 三、循环卷积定义及计算方法
    • 1. 定义公式
    • 2. 适用范围
    • 3. 计算方法
  • 四、周期卷积定义及适用范围
    • 1. 定义公式
    • 2. 适用范围
  • 总结
    • 1. 线性卷积和循环卷积的关系
    • 2. 三者之间的关系
  • 参考




前言

本文首先介绍了卷积的物理意义及卷积的性质(交换律、结合律、分配律),并简单阐述了线性时不变系统;之后分别就定义、适用范围及计算方法对线性卷积、循环卷积、周期卷积进行了介绍;最后总结了线性卷积、循环卷积、周期卷积之间的关系




一、卷积的物理意义及性质


1. 物理意义

卷积物理意义:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加

对于线性时不变系统,如果知道该系统的单位响应,那么将单位响应和输入信号求卷积,就相当于把输入信号的各个时间点的单位响应加权叠加,就直接得到了输出信号。

线性时不变系统:既满足叠加原理又具有时不变特性
1)叠加定理:f(a+b)=f(a)+f(b)f(a+b) = f(a) + f(b)f(a+b)=f(a)+f(b);
2)时不变特性:特定输入的输出结果不会随时间变化。


2. 卷积性质

卷积积分满足交换律、结合律以及分配律:
1)交换律:f(t)∗g(t)=g(t)∗f(t)f(t)∗g(t)=g(t)∗f(t)f(t)g(t)=g(t)f(t);
2)结合律:f(t)∗g(t)∗h(t)=f(t)∗(g(t)∗h(t))f(t)∗g(t)∗h(t)=f(t)∗(g(t)∗h(t))f(t)g(t)h(t)=f(t)(g(t)h(t));
3)分配律:f(t)∗(g(t)+h(t))=f(t)∗g(t)+f(t)∗h(t)f(t)∗(g(t)+h(t))=f(t)∗g(t)+f(t)∗h(t)f(t)(g(t)+h(t))=f(t)g(t)+f(t)h(t);




二、线性卷积定义及计算方法


1. 定义公式

y(n)=x(n)∗h(n)=∑x(k)h(n−k)y(n)=x(n)∗h(n)= ∑x(k)h(n−k)y(n)=x(n)h(n)=x(k)h(nk)

线性时不变离散系统中,若序列x(n)x(n)x(n)是系统的输入信号,h(n)h(n)h(n)是系统在单位脉冲作用下的单位脉冲响应,由于输入离散时间序列x(n)x(n)x(n)可表示为一系列脉冲的线性组合,根据线性系统的齐次性可加性,x(n)x(n)x(n)作用于系统所引起的零状态响应y(n)y(n)y(n)就是序列x(n)x(n)x(n)h(n)h(n)h(n)的卷积和。


2. 适用范围

线性卷积表示一个信号通过一个系统的输出,这个信号可以是无限长的,也可以是有限长的,可以的离散的也可以是连续的。


3. 计算方法

被卷积序列x[n]x[n]x[n]h[n]h[n]h[n]的序列长度分别为MMMNNN,则卷积得到的y[n]y[n]y[n]序列长为L=M+N−1L=M+N-1L=M+N1,计算线性卷积的简单方法为进位保留法

在这里插入图片描述
C语言实现代码:

/*****************************************************************
* 线性卷积函数
*****************************************************************/
void convolution(double input1[], double input2[], double output[], int n, int m)
{int k &#61; 0;int i &#61; 0;int j &#61; 0;for (k &#61; 0; k < m &#43; n - 1; k&#43;&#43;) {output[k] &#61; 0;}//开始卷积//利用时延效果&#xff0c;记录所有乘积后&#xff0c;时间位置一样的相加for (i &#61; 0; i < m; i&#43;&#43;) {for (j &#61; 0; j < n; j&#43;&#43;) {output[i &#43; j] &#43;&#61; input1[i] * input2[j];}}
}



三、循环卷积定义及计算方法


1. 定义公式

设序列h(n)h(n)h(n)x(n)x(n)x(n)的长度分别为NNNMMM&#xff0c;h(n)h(n)h(n)x(n)x(n)x(n)LLL点循环卷积定义为&#xff1a;
在这里插入图片描述
式中&#xff0c;LLL称为循环卷积区间长度&#xff0c;L≥max[N,M]L≥max[N,M]Lmax[N,M]&#xff0c;x((n−m))Lx\big((n-m)\big)_Lx((nm))L是以LLL为周期的周期信号&#xff0c;nnnmmm的变化区间均是[0&#xff0c;L−1][0&#xff0c;L-1][0&#xff0c;L1]


2. 适用范围

循环卷积&#xff08;圆周卷积&#xff09;针对离散信号&#xff0c;是一个有限长序列通过一个系统后的输出序列&#xff0c;在计算这个序列之前&#xff0c;必须先定义卷积运算的点数&#xff0c;不然这个运算就无法确定。


3. 计算方法

循环卷积相较于线性卷积区别在于卷积结果的序列长度与被卷积序列长度&#xff08;输入信号&#xff09;相同。由上面公式可知&#xff0c;直接计算比较复杂&#xff0c;通常采用线性卷积、矩阵相乘或FFT的方法计算循环卷积

1&#xff09;利用线性卷积计算循环卷积
在这里插入图片描述
2&#xff09;利用循环卷积矩阵计算循环卷积
在这里插入图片描述
L&#61;max(M,N)L &#61; max(M,N)L&#61;max(M,N)&#xff0c;则x(n)x(n)x(n)LLL点“循环卷积矩阵”&#xff0c;其特点是&#xff1a;

① 第一行是序列 {x(0),x(1),x(2),⋯,x(L−1)x(0),x(1),x(2),⋯,x(L−1)x(0),x(1),x(2),,x(L1)} 的循环倒相序列。
注&#xff1a;如果x(n)x(n)x(n)的长度MM<L&#xff0c;则需要在x(n)x(n)x(n)末尾补 L-M 个零后&#xff0c;再形成第一行的循环倒相序列&#xff1b;
② 第一行以后的各行均是前一行向右循环移1位形成的&#xff1b;
③ 矩阵的各主对角线上的序列值均相等。

3&#xff09;利用FFT计算循环卷积
在这里插入图片描述
① 4点DFT

x1&#61;[1,2,3,4];
x2&#61;[1,2,3];X1&#61;fft(x1,4);
X2&#61;fft(x2,4);
Y&#61;X1.*X2;
y&#61;ifft(Y);

在这里插入图片描述
② 6点DFT

x1&#61;[1,2,3,4];
x2&#61;[1,2,3];X1&#61;fft(x1,6);
X2&#61;fft(x2,6);
Y&#61;X1.*X2;
y&#61;ifft(Y);

在这里插入图片描述




四、周期卷积定义及适用范围


1. 定义公式

在这里插入图片描述


2. 适用范围

周期卷积针对离散信号&#xff0c;是无限长周期离散信号通过一个离散系统后的输出。




总结

设卷积序列x[n]x[n]x[n]h[n]h[n]h[n]的序列长度分别为MMMNNN&#xff0c;则卷积得到的y[n]y[n]y[n]序列长为LLL


1. 线性卷积和循环卷积的关系

1&#xff09;当L 2&#xff09;当L&#61;N&#43;M-1时&#xff0c;循环卷积&#61;线性卷积&#xff1b;
3&#xff09;当L>N&#43;M-1时&#xff0c;循环卷积是线性卷积末尾补L-(N&#43;M-1)个零&#xff1b;


2. 三者之间的关系

1&#xff09;周期卷积是线性卷积以一定序列长度&#xff08;设为L&#xff09;为周期的周期延拓。
2&#xff09;对周期卷积取主值序列得到循环卷积。




参考

https://blog.csdn.net/abc123mma/article/details/120251384
https://blog.csdn.net/weixin_45810064/article/details/121322948?
https://blog.csdn.net/qq_39408570/article/details/110429928
https://blog.csdn.net/qq_45732223/article/details/110526379


推荐阅读
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文详细介绍了C语言中链表的两种动态创建方法——头插法和尾插法,包括具体的实现代码和运行示例。通过这些内容,读者可以更好地理解和掌握链表的基本操作。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 射频系统中IM3、IIP3、OIP3、增益和P1dB的关系解析
    本文探讨了噪声系数与非线性失真对射频系统性能的影响,详细分析了IM3、IIP3、OIP3、增益(G)和1dB压缩点(P1dB)之间的关系,并提供了相关公式和图表解释。 ... [详细]
  • 本文提供了一系列Python编程基础练习题,涵盖了列表操作、循环结构、字符串处理和元组特性等内容。通过这些练习题,读者可以巩固对Python语言的理解并提升编程技能。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 本题旨在通过给定的评级信息,利用拓扑排序和并查集算法来确定全球 Tetris 高手排行榜。题目要求判断是否可以根据提供的信息生成一个明确的排名表,或者是否存在冲突或信息不足的情况。 ... [详细]
  • 不确定性|放入_华为机试题 HJ9提取不重复的整数
    不确定性|放入_华为机试题 HJ9提取不重复的整数 ... [详细]
author-avatar
风一样的骨头gg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有