线性卷积、循环卷积、周期卷积的定义、计算方法及三者之间的关系-程序员宅基地

技术标签: matlab  线性卷积  算法  周期卷积  循环卷积  c语言  


前言

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


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

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]的序列长度分别为 M M M N N N,则卷积得到的 y [ n ] y[n] y[n]序列长为 L = M + N − 1 L=M+N-1 L=M+N1,计算线性卷积的简单方法为进位保留法

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

/*****************************************************************
*	线性卷积函数
*****************************************************************/

void convolution(double input1[], double input2[], double output[], int n, int m)
{
    
    int k = 0;
	int i = 0;
    int j = 0;

	for (k = 0; k < m + n - 1; k++) 
	{
    
		output[k] = 0;
	}

	//开始卷积
	//利用时延效果,记录所有乘积后,时间位置一样的相加
	for (i = 0; i < m; i++) 
	{
    
		for (j = 0; j < n; j++) 
		{
    
			output[i + j] += input1[i] * input2[j];
		}
	}
}

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

1. 定义公式

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

2. 适用范围

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

3. 计算方法

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

1)利用线性卷积计算循环卷积
在这里插入图片描述
2)利用循环卷积矩阵计算循环卷积
在这里插入图片描述
L = m a x ( M , N ) L = max(M,N) L=max(M,N),则 x ( n ) x(n) x(n) L L L点“循环卷积矩阵”,其特点是:

① 第一行是序列 { 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)} 的循环倒相序列。
注:如果 x ( n ) x(n) x(n)的长度 M < L M<L M<L,则需要在 x ( n ) x(n) x(n)末尾补 L-M 个零后,再形成第一行的循环倒相序列;
② 第一行以后的各行均是前一行向右循环移1位形成的;
③ 矩阵的各主对角线上的序列值均相等。

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

x1=[1,2,3,4];
x2=[1,2,3];

X1=fft(x1,4);
X2=fft(x2,4);
Y=X1.*X2;
y=ifft(Y);

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

x1=[1,2,3,4];
x2=[1,2,3];

X1=fft(x1,6);
X2=fft(x2,6);
Y=X1.*X2;
y=ifft(Y);

在这里插入图片描述


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

1. 定义公式

在这里插入图片描述

2. 适用范围

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


总结

设卷积序列 x [ n ] x[n] x[n] h [ n ] h[n] h[n]的序列长度分别为 M M M N N N,则卷积得到的 y [ n ] y[n] y[n]序列长为 L L L

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

1)当L<N+M-1时,循环卷积是线性卷积长度为L的混叠;
2)当L=N+M-1时,循环卷积=线性卷积;
3)当L>N+M-1时,循环卷积是线性卷积末尾补L-(N+M-1)个零;

2. 三者之间的关系

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


参考

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_64770246/article/details/124527082

智能推荐

BAT批处理创建文件桌面快捷方式_批处理创建桌面快捷方式-程序员宅基地

文章浏览阅读1.5w次,点赞9次,收藏26次。简介一个创建某个文件到桌面快捷方式的BAT批处理.代码@echooff::设置程序或文件的完整路径(必选)setProgram=D:\Program Files (x86)\格式工厂.4.2.0\FormatFactory.exe::设置快捷方式名称(必选)setLnkName=格式工厂v4.2.0::设置程序的工作路径,一般为程序主目录,此项若留空,脚本将..._批处理创建桌面快捷方式

射频识别技术漫谈(6-10)_芯片 ttf模式-程序员宅基地

文章浏览阅读2k次。射频识别技术漫谈(6-10),概述RFID的通讯协议;射频ID卡的原理与实现,数据的传输与解码;介绍动物标签属性与数据传输;RFID识别号的变化等_芯片 ttf模式

Python 项目实战 —— 手把手教你使用 Django 框架实现支付宝付款_django 对接支付宝接口流程-程序员宅基地

文章浏览阅读1.1k次。今天小编心血来潮,为大家带来一个很有趣的项目,那就是使用 Python web 框架 Django 来实现支付宝支付,废话不多说,一起来看看如何实现吧。_django 对接支付宝接口流程

Zabbix 5.0 LTS在清理历史数据后最新数据不更新_zabbix问题没有更新-程序员宅基地

文章浏览阅读842次。Zabbix 5.0 LTS,跑了一年多了一直很稳定,前两天空间显示快满了,于是手贱清理了一下history_uint表(使用mysql truncate),结果折腾了一周。大概故障如下:然后zabbix论坛、各种群问了好久都没解决,最后自己一番折腾似乎搞定了。初步怀疑,应该是由于历史数据被清空后,zabbix需要去处理数据,但是数据量太大,跑不过来,所以来不及更新了(?)..._zabbix问题没有更新

python学习历程_基础知识(2day)-程序员宅基地

文章浏览阅读296次。一、数据结构之字典 key-value

mybatis-plus字段策略注解strategy_mybatisplus strategy-程序员宅基地

文章浏览阅读9.7k次,点赞3次,收藏13次。最近项目中遇到一个问题,是关于mybatis-plus的字段注解策略,记录一下。1问题调用了A组件(基础组件),来更新自身组件的数据,发现自己组件有个字段总是被清空。2原因分析调用的A组件的字段,属于基础字段,自己业务组件,对这个基础字段做了扩展,增加了业务字段。但是在自己的组件中的实体注解上,有一个注解使用错误。mybatis-plus封装的updateById方法,如果..._mybatisplus strategy

随便推点

信息检索笔记-索引构建_为某一文档及集构件词项索引时,可使用哪些索引构建方法-程序员宅基地

文章浏览阅读3.8k次。如何构建倒排索引,我们将这个过程叫做“索引构建”。如果我们的文档很多,这样索引就一次性装不下内存,该如何构建。硬件的限制 我们知道ram读写是随机的操作,只要输入相应的地址单元就能瞬间将数据读出来或者写进去。但是磁盘不行,磁盘必须有一个寻道的过程,外加一个旋转时间。那么只有涉及到磁盘,我们就可以考虑怎么节省I/O操作时间。【注】操作系统往往以数据块为单位进行读写。因为读一_为某一文档及集构件词项索引时,可使用哪些索引构建方法

IT巨头英特尔看好中国市场前景-程序员宅基地

文章浏览阅读836次。英特尔技术与制造事业部副总裁卞成刚7日在财富论坛间隙接受中新社记者采访时表示,该公司看好中国市场前景,扎根中国并以此走向世界是目前最重要的战略之一。卞成刚说,目前该公司正面临战略转型,即从传统PC服务领域扩展至所有智能设施领域,特别是移动终端。而中国目前正引领全球手机市场,预计未来手机、平板电脑等方面的发明创新将大量在中国市场涌现,并推向全球。持相同态度的还有英特尔中国区执行董事戈峻。戈峻

ceph中的radosgw相关总结_radosgw -c-程序员宅基地

文章浏览阅读627次。https://blog.csdn.net/zrs19800702/article/details/53101213http://blog.csdn.net/lzw06061139/article/details/51445311https://my.oschina.net/linuxhunter/blog/654080rgw 概述Ceph 通过radosgw提供RES..._radosgw -c

前端数据可视化ECharts使用指南——制作时间序列数据的可视化曲线_echarts 时间序列-程序员宅基地

文章浏览阅读3.7k次,点赞6次,收藏9次。我为什么选择ECharts ? 本周学校课程设计,原本随机佛系选了一个51单片机来做音乐播放器,结果在粗略玩了CN-DBpedia两天后才回过神,课设还没有开始整。于是懒癌发作,碍于身上还有比赛的作品没交,本菜鸡对硬件也没啥天赋,所以就直接把题目切换成软件方面的题目。写python的同学选择了一个时间序列数据的可视化曲线程序设计题目,果真python在数据可视化这一点性能很优秀。..._echarts 时间序列

ApplicationEventPublisherAware事件发布-程序员宅基地

文章浏览阅读1.6k次。事件类:/** * *   * @className: EarlyWarnPublishEvent *   * @description:数据风险预警发布事件 *   * @param: *   * @return: *   * @throws: *   * @author: lizz *   * @date: 2020/05/06 15:31 * */public cl..._applicationeventpublisheraware

自定义View实现仿朋友圈的图片查看器,缩放、双击、移动、回弹、下滑退出及动画等_imageview图片边界回弹-程序员宅基地

文章浏览阅读1.2k次。如需转载请注明出处!点击小图片转到图片查看的页面在Android开发中很常用到,抱着学习和分享的心态,在这里写下自己自定义的一个ImageView,可以实现类似微信朋友圈中查看图片的功能和效果。主要功能需求:1.缩放限制:自由缩放,有最大和最小的缩放限制 2居中显示:.若图片没充满整个ImageView,则缩放过程将图片居中 3.双击缩放:根据当前缩放的状态,双击放大两倍或缩小到原来 4.单指_imageview图片边界回弹