目录

1.线性卷积原理

2.利用对位相乘法计算线性卷积

3.Matlab实操

3.1源代码

3.2仿真结果

线性卷积原理

公示(1)为两个离散非周期序列进行线性卷积

一般我们计算线性卷积时使用图解法最为常见,简单概括为“变量置换”、“翻转”、“平移”、“相乘”以及“求和”,这里就不过多陈述。

利用对位相乘法计算线性卷积

将两个离散非周期序列左端或右端对齐,对位相乘,然后按列求和,不进位,以序列x(n)=[1 2 3] 和h(n)=[1 1 1 1]并且以左端对齐为例,运算过程如下:

 

首先以序列h(n)为对象,将左起第一个1分别与序列x(n)的三个元素1、2、3依次相乘得到1、2、3,然后右移移位一位,相当于移到h(2)的位置上,用该位置上的元素1分别乘以x(n)的1、2、3,依旧得到1、2、3,同样的,继续移位并执行相同的操作。注意移到某个位置时相乘后的结果要与该元素的位置对齐。最后,将每一行相乘的结果按列相加即可得到卷积结果。对比图解法,此方法更为快捷,明了。

同样我们也可以以x(n)为对象,用它的元素分别乘以h(n),如下图所示:

当然,读者也可用图解法验证上述结果是否正确,并且以右端对齐为例验证上述结果。一个以右端对齐的例子:

Matlab实操

源代码

%% =========================================================================================================
% 程序说明:本程序提供一种基于对位相乘法的自定义线性卷积函数写法,替代Matlab自带conv函数,供大家参考
% 程序名称:linear convolution 线性卷积
% 作者: hill5678
% 当前版本:1.0
%% =========================================================================================================
clear all;
close all;
clc;
%% ==================================================主函数部分==============================================
X=input('enter a arbitrary discrete-time sequence here:');
H=input('enter a arbitrary discrete-time sequence here:');
Y=linear_convolution(X,H);
display(Y);
%% ================================================定义线性卷积函数============================================
function y=linear_convolution(x,h)
n=length(x);m=length(h);% 输入离散时间序列的长度
y=[];y1=[];y2=[];y3=[];y4=[];y5=[];y6=[];
a=m;
N=n+m-1;% 卷积后新序列的长度
b=N;
M=N-n;% 矩阵形成并移位后每行需要补零的个数
for i1=0:a-2for i=0:m-1for k=0:n-1y1(i+1,k+1)=h(i+1)*x(k+1);% 按照对位相乘法将两个序列左端对齐,依次对位相乘endy2=y1;% 将结果矩阵赋给要y2endy3=[y2,zeros(m,M)];%将y2后面加入零矩阵y4=circshift(y3(i1+2,:),i1+1,2);% 循环移位函数,将y4从第二行开始向右按行移位。第二行移一位,第三行移两位,按此规律依次类推y5=[y5;y4];
end
y6=[y3(1,:);y5];% y3的第一行不变
y=sum(y6);% 将矩阵y6按列相加得到卷积结果
disp(y);
stem(y,'fill')
title('线性卷积结果:序列y(n)');
grid on;
end

仿真结果

例如输入序列x(n)=[1 2 3] 和h(n)=[1 1 1 1],Maltab命令框窗口:

Matlab仿真结果

参考文献

线性卷积、周期卷积、圆周卷积------一篇弄懂


*本人初来乍到,希望大家多多支持,如果上述内容有误,请大家留言指正,我会及时修改*

利用对位相乘法计算线性卷积-附Matlab代码相关推荐

  1. 单频信号的相位谱计算与误差修正-附Matlab代码

    一.问题描述 我们在实际处理时经常遇到只有一个正弦信号的情况,其频率为 f 0 {{f}_{0}} f0​,在谱分析以后,除了在频率为 f 0 {{f}_{0}} f0​处有相位数值外,其他频率处都有 ...

  2. 用计算机计算线性卷积的基本规则,实验三_线性卷积与圆周卷积的计算.doc

    实验三_线性卷积与圆周卷积的计算 电信类课程试验报告 学 院:基础信息工程系 别:电子信息工程课程名称:数字信号处理姓 名:学 号:日 期:实验三实验名称:线性卷积与圆周卷积的计算一.实验目的 (1) ...

  3. 数字信号处理:视频-15-FFT计算线性卷积

    视频-15-FFT计算线性卷积(1) 链接:https://pan.baidu.com/s/1dIKAJAhgn12OjdevzWfxjQ  提取码:k8jm 视频-15-FFT计算线性卷积(2) 链 ...

  4. 计算机计算线性卷积规则,实验四----线性卷积与圆周卷积的计算.doc

    实验三 线性卷积与圆周卷积的计算 实验目的 1.掌握计算机的使用方法和常用系统软件及应用软件的使用. 2.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力. 3.掌握线性卷积与循环卷积软件实 ...

  5. 利用OpenSearch API检索和下载数据 附Python代码实例

    利用OpenSearch API检索和下载数据 附Python代码实例 在数据下载过程中,我们常常会需要下载非常多的数据文件,这时我们可以利用wget等软件或者编写数据下载脚本来实现数据下载的批处理. ...

  6. 几种常用信号平滑去噪的方法(附Matlab代码)

    几种常用信号平滑去噪的方法(附Matlab代码) 1 滑动平均法 1.0 移动平均法的方法原理 1.1 matlab内自带函数实现移动平均法 1.2 利用卷积函数conv()实现移动平均法 1.3 利 ...

  7. 数学规划模型总结(附MatLab代码)

    数学规划模型总结(附MatLab代码) 概述 定义 一般形式 分类 线性规划(linear programming) 非线性规划(nonlinear programming) 整数规划(integer ...

  8. 四维空间的二维线框投影可视化(附matlab代码)

    四维空间的二维线框投影可视化(附matlab代码) 1 三维空间在2维屏幕上的投影 1.1平行投影 1.2透视投影 2 四维空间在2维屏幕上的投影 2.1 四维空间与三维空间的一些区别 2.2 四维空 ...

  9. SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

    合成孔径雷达发射信号以线性调频信号(LFM)为基础,目前大部分合成孔径雷达都是LFM体制,为了减轻雷达重量也采用线性调频连续波(FMCW)体制:为了获得大带宽亦采用线性调频步进频(FMSF)体制. ( ...

最新文章

  1. windows上安装zipMongoDB安装包
  2. std::transform使用
  3. 【排序算法】— 手写堆排序
  4. 数据挖掘:基于朴素贝叶斯分类算法的文本分类实践
  5. Postman获取App端接口
  6. 伦茨8400变频器面板按键说明_lenze变频器 8400 protec
  7. 【前端知识学习】HTML5 学习笔记
  8. M - 简单字符串排序
  9. 非表单元素如何使用焦点事件
  10. Linux下安装PHP扩展 pdo_sqlsrv
  11. appscan 9.0.3.10 版本下载
  12. 利用Python进行游戏脚本编程,不愧是最强的脚本语言
  13. 阳光牧场助手 阳光牧场外挂
  14. 记一次阿里巴巴电话面试题
  15. 异次元发卡源码/荔枝发卡V3.0二次元风格发卡网全开源源码/对接免签约支付接口
  16. Nuxt入门到打包部署 Vue-SSR项目
  17. 中秋节到了我给大家用python做一个月饼
  18. one 主格 复数 宾格_主格和宾格
  19. 前端请求跨域,原来是谷歌浏览器的限制
  20. Prim算法解决最小生成树 (解决修路问题)

热门文章

  1. 鲸交所与HashQuark达成战略合作
  2. Java实际项目运用之策略模式
  3. django创建应用程序_使用Django创建基于机器学习的Web应用程序
  4. 适用于 Web 开发者的 Atom 编辑器插件
  5. Mavn项目报错Could not find artifact com.ywj:SpringCloudCRM-api:jar:1.0-SNAPSHOT
  6. Linux目录说明(FHS)
  7. 第四届蓝桥杯单片机省赛 自动灌溉系统
  8. 分区表信息整理 for10g
  9. 【Kubernetes】 DaemonSet 详解
  10. 高性能Linux架构实战 [高俊峰] 笔记摘要