热门标签 | 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


推荐阅读
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
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社区 版权所有