文章目录

  • 一、卷积计算原理
  • 二、卷积计算
    • 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(n−m)=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=32 + 2 - 1 = 32+2−1=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(n−m)=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(n−m)

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(0−m)

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

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

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

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

最终 :

y(0)=x(0)h(0)=1×1=1y(0) = x(0)h(0)= 1 \times 1 = 1y(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(1−m)

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

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

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

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

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

最终 :

y(1)=x(0)h(1)+x(1)h(0)=2+2=4y(1) = x(0)h(1)+x(1)h(0) = 2 + 2 = 4y(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(2−m)

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

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

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

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

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

最终 :

y(1)=x(0)h(1)+x(1)h(0)=0+4=4y(1) = x(0)h(1)+x(1)h(0) = 0 + 4 = 4y(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/卷积 百度百科 ;

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

  1. 随机数字信号处理期末大报告——基于卡尔曼滤波的自由落体运动目标跟踪MATLAB实现

    完整的实验报告下载随机数字信号处理期末大报告-基于卡尔曼滤波的自由落体运动目标跟踪.docx-机器学习文档类资源-CSDN下载 ​​​​​​ 程序包及所需数据下载 target tracking us ...

  2. matlab计算结构自振频率,基于Matlab的多自由度系统固有频率及振型计算

    基于Matlab的多自由度系统固有频率及振型计算 阅读:25212010-04-13 21:38 标签:杂谈 可参考文涛,基于Matlab语言的多自由度振动系统的固有频率及主振型计算分析,2007 对 ...

  3. 【数字信号处理】带通采样定理原理及其MATLAB仿真说明

    引言 平常我们所讲的采样定理(奈奎斯特采样定理)一般要求满足: f s ≥ 2 f H f_s≥2f_H fs

  4. visio中公式太小_学SolidWorks钣金必知的钣金折弯与展开计算原理与公式

    板料在弯曲过程中外层到到拉应力,内层受到压应力,从拉到压之间有一既不受拉力又不受压力的过度层为中性层:中性层在高曲过程中的长度和弯曲前一样,保持不变,所以中性层是计算高曲件展开长度的基准. 1.中性层 ...

  5. matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 翻了翻优化工具箱,发现内容 ...

  6. 数字信号处理1:卷积

    文章目录 一.前言 二.线性时不变(LTI)系统 三.冲激函数 四.阶跃函数 五.卷积 5.1 卷积的推导 5.2 LTI系统卷积的性质 5.2.1 交换律 5.2.2 分配律 5.2.3 结合律 数 ...

  7. 关于MATLAB实现的数字信号处理(二)

    上一篇:关于MATLAB实现的数字信号处理(一) 下一篇:关于MATLAB实现的数字信号处理(三) 文章目录 上一篇:关于MATLAB实现的数字信号处理(一) 下一篇:关于MATLAB实现的数字信号处 ...

  8. 新书预告:Xilix FPGA数字信号处理设计——基础版

    掌握FPGA数字信号处理设计需满足三个条件:熟悉FPGA设计方法.理解数字信号处理理论.掌握理论的工程实现方法.对初学者来讲,每个条件看似都难以逾越.杜勇老师完美融合课程教学与工程设计的需求特点,以独 ...

  9. c语言实现1024点fft程序,数字信号处理的步骤与注意事项,并编写1024个采样点的FFT C语言程序...

    数字信号处理的步骤与注意事项,并编写1024个采样点的FFT C语言程序 1. 数字信号处理 1.1 数字信号处理概述 数字信号处理是研究如何用数字或符号序列来表示信号以及如何对这些序列进行处理的一门 ...

  10. matlab 85个实用案例勘误,MATLAB数字信号处理85个实用案例精讲.入门到进阶+源代码(无需密码).rar...

    [实例简介] 本压缩包包含了MATLAB数字信号处理85个实用案例精讲.pdf以及每一章的实例m文件以及函数,下载即可使用,内无密码设置 [实例截图] [核心代码] MATLAB数字信号处理85个实用 ...

最新文章

  1. python中requests库的用途-python中requests库的post请求
  2. Windows上创建文件夹链接
  3. Android生成Xml文件
  4. jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...
  5. ASP.NET和C#中对XML的操作,以及简单的xml与xsl !
  6. 背包例题の01,完全,多重
  7. 开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源
  8. 数字IC后端设计实现流程之floorplan及powerplan规划
  9. linux使用ftp传递文件,在linux下使用FTP命令传输文件
  10. 为什么固态硬盘比机械硬盘读取速度快?
  11. 投屏设置 android,上班摸鱼神器 Anlink安卓手机投屏操作体验
  12. 【FinalIK】Full Body Biped IK
  13. 免费注册个体户营业执照出证教程
  14. 幻方加密代码——自动生成幻方密钥方法,罗伯法单偶数阶的解法代码基于python
  15. 杰克.韦尔奇的《赢》读后节选
  16. 需求响应|动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)
  17. 工业互联网的前世今生 | 初探工业互联网
  18. 网络推广-方法和技巧
  19. matlab有限元工具箱计算+python绘图
  20. html5编程色卡颜色,手把手教你制作手写色卡书签

热门文章

  1. VMware虚拟机快照功能
  2. linux如何压缩zip文件格式,linux下常用压缩格式的压缩与解压方法
  3. python学习笔记 正则表达式 详解2
  4. 【每日1刷系列】接口测试常见面试题
  5. Web的脆弱性:各种注入、攻击
  6. 你能拥有选择权,而不是被人决定
  7. Windows AD共享权限管理工具
  8. Webpack的Code Splitting实现按需加载
  9. 有的人明明可以年薪百万,却在10万年薪的行业干一辈子
  10. 在给猫起名字这件事上,铲屎官们绝对是个鬼才!