【数字信号处理】卷积编程实现 ( 卷积计算原理 | 卷积公式计算 | 使用 matlab 计算卷积 | 使用 C 语言实现卷积计算 )

article/2025/10/19 10:47:40

文章目录

  • 一、卷积计算原理
  • 二、卷积计算
    • 1、计算 y(0)
    • 2、计算 y(1)
    • 3、计算 y(2)
  • 三、使用 matlab 计算卷积
  • 四、使用 C 语言实现卷积计算





一、卷积计算原理



对于 线性时不变系统 ( LTI - Linear time-invariant ) 来说 ,

假设 x ( n ) x(n) x(n) 是 LTI 系统的 " 输入序列 " , y ( n ) y(n) y(n) 是 " 输出序列 " ,

则有 :

y ( n ) = ∑ m = − ∞ + ∞ x ( m ) h ( n − m ) = x ( n ) ∗ h ( n ) y(n) = \sum^{+\infty}_{m = -\infty} x(m) h(n-m) = x(n) * h(n) y(n)=m=+x(m)h(nm)=x(n)h(n)


线性时不变系统 ( LTI - Linear time-invariant ) 的

" 输出序列 "

等于

" 输入序列 "" 系统单位脉冲响应 "线性卷积 ;


输出序列 的元素个数 : 输 出 序 列 元 素 个 数 = 输 入 序 列 元 素 个 数 + 单 位 脉 冲 响 应 序 列 元 素 个 数 − 1 输出序列元素个数 = 输入序列元素个数 + 单位脉冲响应序列元素个数 - 1 =+1





二、卷积计算



给定 输入序列 :

x ( n ) = { 1 , 2 } [ 0 , 1 ] x(n) = \{1,2\}_{[0, 1]} x(n)={1,2}[0,1]

单位脉冲响应 :

h ( n ) = { 1 , 2 } [ 0 , 1 ] h(n) = \{1,2\}_{[0, 1]} h(n)={1,2}[0,1]

计算卷积 : x ( n ) ∗ h ( n ) x(n) * h(n) x(n)h(n) ;


卷积结果序列对应的元素个数是 2 + 2 − 1 = 3 2 + 2 - 1 = 3 2+21=3


根据如下 卷积 公式 :

y ( n ) = ∑ m = − ∞ + ∞ x ( m ) h ( n − m ) = x ( n ) ∗ h ( n ) y(n) = \sum^{+\infty}_{m = -\infty} x(m) h(n-m) = x(n) * h(n) y(n)=m=+x(m)h(nm)=x(n)h(n)

x ( n ) ∗ h ( n ) = ∑ m = − ∞ + ∞ x ( m ) h ( n − m ) x(n) * h(n) = \sum^{+\infty}_{m = -\infty} x(m) h(n-m) x(n)h(n)=m=+x(m)h(nm)


1、计算 y(0)


计算 y ( 0 ) y(0) y(0) :

∑ m = − ∞ + ∞ x ( m ) h ( 0 − m ) \sum^{+\infty}_{m = -\infty} x(m) h(0-m) m=+x(m)h(0m)

m m m 取值 [ − ∞ , + ∞ ] [-\infty, +\infty] [,+]

m < 0 m < 0 m<0 时 , 有 x ( m ) = 0 x(m) = 0 x(m)=0 , 则 x ( m ) h ( n − m ) = 0 x(m) h(n-m) = 0 x(m)h(nm)=0 , 累加没有意义 ;

m = 0 m = 0 m=0 时 , 有 x ( 0 ) h ( 0 − 0 ) = x ( 0 ) h ( 0 ) = 1 × 1 = 1 x(0)h(0 - 0) = x(0)h(0) = 1 \times 1 = 1 x(0)h(00)=x(0)h(0)=1×1=1

m ≥ 1 m \geq 1 m1 时 , 有 h ( n − m ) = h ( 0 − m ) = 0 h(n - m) = h(0 - m) = 0 h(nm)=h(0m)=0 , 则 x ( m ) h ( n − m ) = 0 x(m)h(n - m) = 0 x(m)h(nm)=0 , 累加没有意义 ;

最终 :

y ( 0 ) = x ( 0 ) h ( 0 ) = 1 × 1 = 1 y(0) = x(0)h(0)= 1 \times 1 = 1 y(0)=x(0)h(0)=1×1=1


2、计算 y(1)


计算 y ( 1 ) y(1) y(1) :

∑ m = − ∞ + ∞ x ( m ) h ( 1 − m ) \sum^{+\infty}_{m = -\infty} x(m) h(1-m) m=+x(m)h(1m)

m m m 取值 [ − ∞ , + ∞ ] [-\infty, +\infty] [,+]

m < 0 m < 0 m<0 时 , 有 x ( m ) = 0 x(m) = 0 x(m)=0 , 则 x ( m ) h ( n − m ) = 0 x(m) h(n-m) = 0 x(m)h(nm)=0 , 累加没有意义 ;

m = 0 m = 0 m=0 时 , 有 x ( m ) h ( n − m ) = x ( 0 ) h ( 1 − 0 ) = x ( 0 ) h ( 1 ) = 1 × 2 = 2 x(m) h(n-m) = x(0)h(1 - 0) = x(0)h(1) = 1 \times 2 = 2 x(m)h(nm)=x(0)h(10)=x(0)h(1)=1×2=2

m = 1 m = 1 m=1 时 , 有 x ( m ) h ( n − m ) = x ( 1 ) h ( 1 − 1 ) = x ( 1 ) h ( 0 ) = 2 × 1 = 2 x(m) h(n-m) = x(1)h(1 - 1) = x(1)h(0) = 2 \times 1 = 2 x(m)h(nm)=x(1)h(11)=x(1)h(0)=2×1=2

m ≥ 2 m \geq 2 m2 时 , 有 h ( n − m ) = h ( 2 − m ) = 0 h(n - m) = h(2 - m) = 0 h(nm)=h(2m)=0 , 则 x ( m ) h ( n − m ) = 0 x(m)h(n - m) = 0 x(m)h(nm)=0 , 累加没有意义 ;

最终 :

y ( 1 ) = x ( 0 ) h ( 1 ) + x ( 1 ) h ( 0 ) = 2 + 2 = 4 y(1) = x(0)h(1)+x(1)h(0) = 2 + 2 = 4 y(1)=x(0)h(1)+x(1)h(0)=2+2=4


3、计算 y(2)


计算 y ( 2 ) y(2) y(2) :

∑ m = − ∞ + ∞ x ( m ) h ( 2 − m ) \sum^{+\infty}_{m = -\infty} x(m) h(2-m) m=+x(m)h(2m)

m m m 取值 [ − ∞ , + ∞ ] [-\infty, +\infty] [,+]

m < 0 m < 0 m<0 时 , 有 x ( m ) = 0 x(m) = 0 x(m)=0 , 则 x ( m ) h ( n − m ) = 0 x(m) h(n-m) = 0 x(m)h(nm)=0 , 累加没有意义 ;

m = 0 m = 0 m=0 时 , 有 x ( m ) h ( n − m ) = x ( 0 ) h ( 2 − 0 ) = x ( 0 ) h ( 2 ) = 1 × 0 = 0 x(m) h(n-m) = x(0)h(2 - 0) = x(0)h(2) = 1 \times 0 = 0 x(m)h(nm)=x(0)h(20)=x(0)h(2)=1×0=0 , h h h 仅在 0 , 1 0,1 0,1 索引有值 , 2 2 2 索引值为 0 ;

m = 1 m = 1 m=1 时 , 有 x ( m ) h ( n − m ) = x ( 1 ) h ( 2 − 1 ) = x ( 1 ) h ( 1 ) = 2 × 2 = 4 x(m) h(n-m) = x(1)h(2 - 1) = x(1)h(1) = 2 \times 2 = 4 x(m)h(nm)=x(1)h(21)=x(1)h(1)=2×2=4

m ≥ 2 m \geq 2 m2 时 , 有 h ( n − m ) = h ( 2 − m ) = 0 h(n - m) = h(2 - m) = 0 h(nm)=h(2m)=0 , 则 x ( m ) h ( n − m ) = 0 x(m)h(n - m) = 0 x(m)h(nm)=0 , 累加没有意义 , h h h 仅在 0 , 1 0,1 0,1 索引有值 , 小于 0 0 0 的索引值为 0 ;

最终 :

y ( 1 ) = x ( 0 ) h ( 1 ) + x ( 1 ) h ( 0 ) = 0 + 4 = 4 y(1) = x(0)h(1)+x(1)h(0) = 0 + 4 = 4 y(1)=x(0)h(1)+x(1)h(0)=0+4=4





三、使用 matlab 计算卷积



matlab 源码 :

x = [1, 2];
h = [1, 2];y = conv(x, h);

最终计算结果 : y ( n ) = { 1 , 4 , 4 } [ 0 , 2 ] y(n) = \{1,4,4\}_{[0,2]} y(n)={1,4,4}[0,2]

在这里插入图片描述





四、使用 C 语言实现卷积计算



从百度百科找了个源码 : convolution 是卷积计算的函数 , 仅做参考 ;

void convolution(double *input1, double *input2, double *output, int mm, int nn)
{double *xx = new double[mm + nn - 1];// do convolution for (int i = 0; i < mm + nn - 1; i++){xx[i] = 0.0;for (int j = 0; j < mm; j++){if (i - j >= 0 && i - j < nn)xx[i] += input1[j] * input2[i - j];}}// set value to the output array for (int i = 0; i < mm + nn - 1; i++)output[i] = xx[i];delete[] xx;
}

源码参考 https://baike.baidu.com/item/卷积 百度百科 ;


http://chatgpt.dhexx.cn/article/RmWMdwiB.shtml

相关文章

第二十一讲 卷积公式

一&#xff0c;卷积公式&#xff1a; 已知&#xff1a;&#xff0c;设&#xff1a;求&#xff1a;因为拉氏变换是由幂级数变过来的&#xff0c;所以上面的问题可以转换为下面的问题方便计算&#xff1a; 已知&#xff1a;&#xff0c;设&#xff1a;求&#xff1a;&#xff0…

卷积积分整理

卷积是一种计算方法 1、一维连续卷积 1.1 基本概念 h ( x ) f ( x ) ⊗ g ( x ) ∫ − ∞ ∞ f ( u ) g ( x − u ) d u h(x) f(x)\otimes g(x) \int_{-\infty}^{\infty}f(u)\times g(x-u)du h(x)f(x)⊗g(x)∫−∞∞​f(u)g(x−u)du 对于线性时不变系统&#xff0c;它的…

卷积神经网络卷积计算,卷积网络计算公式

卷积运算的过程是什么&#xff1f;卷积计算的矩阵是怎么来的&#xff0c;如下图&#xff0c;这个卷积运算示意图怎么理解&#xff1f; 首先&#xff0c;卷积核相同&#xff0c;输入相同&#xff0c;输出的特征是一样的。只不过将输出的矩阵形式换成了列向量的形式。 实质上一…

卷积计算——卷积公式

W i n p u t W_{input} Winput​和 H i n p u t H_{input} Hinput​是图片的宽和高。 W f i l t e r W_{filter} Wfilter​和 H f i l t e r H_{filter} Hfilter​是卷积核的宽和高。 P P P是padding填充的圈数。 S S S是卷积核的步长。

matlab light log,MATLAB Implementation: light-weight vs. heavy-weight 转自林达华

这次&#xff0c;回到一个实际一点的问题&#xff0c;关于matlab的实现。 同一个数学问题&#xff0c;在实际计算中&#xff0c;往往是可能有多种途径的。虽然殊途同归&#xff0c;但是效率很可能大相径庭(即使这些不同途径在理论上有相同的复杂度)。对于 小规模计算&#xff0…

概率漫谈 转自 林达华

(2013-01-29 18:20:49) 转载▼ 分类&#xff1a; 科技 一段时间&#xff0c;随着研究课题的深入&#xff0c;逐步研习现代概率理论&#xff0c;这是一个令人耳目一新的世界。这个世界实在太博大&#xff0c;我自己也在不断学习之中。这篇就算起一个头吧&#xff0c;后面有空的时…

麻省理工MIT大神解说数学体系;2012年计算机博士港中大林达华简历(公号回复“MIT林达华”下载彩标PDF论文)

麻省理工MIT大神解说数学体系;2012年计算机博士港中大林达华简历(公号回复“MIT林达华”下载彩标PDF论文) 原创: 林达华 数据简化DataSimp 今天 数据简化DataSimp导读:林达华是MIT计算机科学博士,读研时以贝叶斯非参建模斩获顶会NIPS2010年最佳学生论文奖、ICCV2009和2…

林达华解说数学体系

[转]MIT牛人解说数学体系 一直想对数学有个宏观把握&#xff0c;恰好看到这篇文章&#xff0c;甚是高兴。网上说&#xff0c;本文出自林达华&#xff0c;我是从这里转载的。在此基础上&#xff0c;将概率论小节移到实分析下&#xff0c;并加粗了一些语句&#xff0c;还补充两张…

【java】商城进货交易记录程序设计

【任务介绍】 1.任务描述 商城仓库中有多种商品&#xff0c;商品每次进货需要生成一条进货记录保存到文件。本案 例要求编写一个记录商城进货交易的程序&#xff0c;使用字节流将商场的进货信息记录在本地 的 CSV 文件中。程序具体要求如下。 程序启动后&#xff0c;先打印库…

开源Java商城项目Javashop的部署过程

推荐&#xff1a;需要Java商城定制开发可以联系本人&#xff1a;QQ3413414 电话15911100004 服务器为&#xff1a;阿里云CentOS 8.2版本&#xff0c;做测试用2核4G就够 Javashop B2C源码地址 https://gitee.com/enation/Javashop-B2C 因为这个项目是基于maven的&#xff0c;所…

JAVA 单商户商城系统 成熟源码 支持二开

三勾商城是开发友好的微信小程序商城&#xff0c;框架支持SAAS&#xff0c;支持发布 iOS Android 公众号 H5 各种小程序&#xff08;微信/支付宝/百度/头条/QQ/钉钉/淘宝&#xff09;等多个平台&#xff0c;不可多得的二开神器&#xff0c; 为大中小企业提供极致的移动电子…

java商城系统设计—竞拍

竞价拍卖商城系统功能介绍&#xff1a; 一、可单独设置参与竞拍的商品&#xff0c;适用于各种经营需求&#xff1b; 二、可开启抬价“机器人”和“回本设置”&#xff0c;确保商品不会被用过低的价格买走&#xff0c;保证商城的盈利性&#xff1b; 三、可设置“加价倒计时”…

java 商城系统架构之第三篇——集群架构搭建

需要商城系统的朋友&#xff0c;请联系下方微信 其实集群说起来是很简单的&#xff0c;无非就是server部署在多台机器上&#xff0c;DB、session、文件等在做个机器、CDN加速就OK了。 但是实际上需要做的事还有非常多&#xff0c;并且在过程中需要填非常多的坑。 这里说一个…

如何做一个基于JAVA购物商城系统毕业设计毕设作品(springboot框架)

分析架构 我们开发系统&#xff0c;常规有两个架构&#xff0c;一个BS架构&#xff08;浏览器/服务器模式&#xff09;&#xff0c;一个CS&#xff08;客户端/服务器端模式&#xff09;&#xff1b;基于JAVA的网站开发属于B/S架构&#xff08;即浏览器和服务器架构模式&#x…

java商城推荐算法(含源码,小程序,vue,uniapp)

用户协同推荐算法思想 如果你喜欢苹果、香蕉、芒果等物品&#xff0c;另外有个人也喜欢这些物品&#xff0c;而且他还喜欢西瓜&#xff0c;则很有可能你也喜欢西瓜这个物品。 所以说&#xff0c;当一个用户 A 需要个性化推荐时&#xff0c;可以先找到和他兴趣相似的用户群体 …

JAVA商城源码-B2B2C商城系统-独立部署,一套源码终身可用

在现在电商迅速占领市场的时代里&#xff0c;选择开发商城系统已经成为了一种趋势&#xff0c;现在开发搭建商城系统有很多编程语言可以选择&#xff0c;目前在电商里市面上受到很多商家企业的喜爱的便是Java商城系统&#xff0c;那为什么要选择Java电商系统呢&#xff1f; 1、…

商城 源码 java_java网上商城平台源码(含数据库脚本)

【实例简介】管理员后台管理商品以及对留言订单的处理,用户对订单的购买及留言 【实例截图】 【核心代码】 package com.shop.controller; import java.util.Date; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; import …

java商城系统设计-----积分商城系统

积分商城的“积分”概念&#xff0c;指的是用户&#xff08;更多指的是经过注册验证的用户&#xff09;在消费后获得的一种奖励&#xff0c;从而实现客户关怀、客户忠诚度提升的目的。其消费模式包括传统的现场消费如超市购物&#xff0c;也包括日益普及的网上购物。获得的积分…

Java商城项目实战

项目背景 编写目的 明确业务背景、业务范围、基本业务逻辑和业务框架&#xff0c;期望读者包括&#xff1a;项目发起人、最终用户、项目投资方、项目管理团队、项目执行团队&#xff0c;以及其他项目干系人。 参考文档 “ESMS3.x 详细设计说明设计文档.doc”: 详细设计说明…

JAVA商城系统开发 VS PHP商城系统开发

在互联网快速发展的今天&#xff0c;越来越多的企业通过开发商城系统来拓展自己的业务&#xff0c;很多企业也会纠结&#xff1a;商城系统开发&#xff0c;选择PHP语言开发好&#xff0c;还是选择JAVA语言开发好&#xff1f;小来从几个方便对比了两种开发语言的优劣势&#xff…