1卷积演示程序设计原理

数字信号处理的直接对象是数字信号,处理的方式是数值运算的方式,它涉及到的内容非常丰富和广泛,它是应用最快、成效最显著的新学科之一,作为信息专业的专业基础课,需要掌握其基本理论和基本的分析方法,通过理论实践、原理和应用结合掌握知识。而MATLAB是集数学计算、图形处理和程序语言设计于一体的软件,通过MATLAB来实现数字信号处理的有关表达,最终实现课程设计的目的。卷积演示程序设计要求

(1)序列的长度和内容由运行时输入;

(2)分别动态演示它们进行线性卷积和循环卷积的过程,要求体现翻转、移位、相乘、求和等过程;

(3)根据卷积结果,分析两类卷积的关系。卷积演示程序设计目的

(1)、通过基于MATLAB的算法仿真实验及分析,进一步领会和深化课堂上学到的有关数字信号处理的基本概念、基本原理以及基本的信号处理操作及设计方法。

(2)、掌握线性卷积与圆周卷积软件实现的方法,并验证二者之间的关系。

1.2 卷积演示程序设计内容

(1)可输入任意2待卷积序列x1(n)、x2(n),长度不做限定。测试数据为:

x1(n)={1,1,1,1,0, 0,1,1,1,1,0,0},x2(n)={0,1,2,1,0,0,0,1,2,1,0,0};

(2)分别动态演示2序列进行线性卷积x1(n)﹡x2(n)和圆周卷积x1(n) x2 (n)的过程;要求分别动态演示翻转、移位、乘积、求和的过程。

(3)圆周卷积默认使用2序列中的最大长度,但卷积前可以指定卷积长度N用以进行混叠分析。

(4)根据实验结果分析2类卷积的关系。

2卷积演示程序总体设计及关键技术分析

2.1 卷积演示程序设计基本原理

2.1.1 线性卷积

线性时不变系统(Linear Time-Invariant System, or L. T. I系统)的输入、输出间的关系为:当系统输入序列为x(n),系统的单位脉冲响应为h(n),输出序列为y(n),则系统输出为:

上式称为离散卷积或线性卷积。

2.1.2 圆周卷积

设两个有限长序列x1(n)和x2(n),均为N点长

x1(n)

X1(K)

x2(n)

X2(K)

如果X3(K)=X1(K)﹒X2(K)

N

上式称为循环卷积或圆周卷积

注:

为x1(n)序列的周期化序列;

的主值序列。

编程计算时,x3(n)可表示如下:

2.2 两个有限长序列的线性卷积

序列x1(n)为L点长,序列x2(n)为P点长,x3(n)为这两个序列的线性卷积,则x3(n)为

且线性卷积x3(n)的最大长L+P-1,也就是说当

时x3(n)=0。

2.3 两个有限长序列的圆周卷积

线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这理论基础上,如卷积滤波等,专用函数conv(x,h)可完成线性卷积过程。

圆周卷积的计算速度远快于线性卷积,如果选择圆周卷积的长度

,则可以用圆周卷积取代线性卷积。方法如下:定义圆周卷积的长度:选择N=L+P-1。

将两个序列的长度都补足为N:

将长为L的序列x1(n)延长到N,补N-L个零;

将长为P的序列x2(n)延长到N,补N-P个零;翻转x1(n),周期延拓为序列

,取主周期。

循环移位:与线性卷积不同,圆周卷积运算中采用的是循环移位,有限长序列x1(n)的循环移位定义为:

其含义如下:

表示x(n)的周期延拓序列

的移位:

表示对移位的周期序列

取主值序列。所以f(n)仍然是一个长度为N的有限长序列。

2.4 卷积演示程序设计思想

首先建立一个基本的框架,制作一个菜单,其中包括主程序菜单和子程序的菜单,子程序菜单可以选择回到主程序菜单选择功能。菜单的框架完成后,实现可以任意输入两个序列,然后分别制作动态演示序列的线性卷积的程序、动态演示序列的圆周卷积、以及验证时域卷机定理以及比较运行速率的程序。结合上面建立的框架完成菜单选择以及功能的调用,让整个设计完美。

2.4.1卷积演示程序设计流程图

卷积演示程序设计流程图如图1所示:

图1  流程图

2.4.2卷积演示程序关键技术分析

本个设计主要要实现动态的演示,为实现动态演示,有很多不同的方法,而我采用的是for循环加上pause,在for循环中的一次执行中,实现一次绘图,表示某一时刻的状态,用pause暂停等待for循环中下一次执行,实现动态演示。这是主要的一个设计,另外一个重要的技巧是如何将循环卷积表示出来,因为循环卷积的结果是周期的,其循环卷积的方法和线性卷积不同,并且循环卷积中要处理几种情况:如当x1序列和x2序列之间的最大长度比卷积N长度大时是一种画图方法,比它小时是另外一种方法,然而困难的是当循环卷积长度比序列最大长度小时还要分析x1和x2序列各自长度与N的关系而做不同的情况分析,具体的解决方法见程序实现。

3卷积演示程序

3.1程序实现

3.1.1线性卷积程序实现

x1=[1,1,1,1,0,0,1,1,1,1,0,0];

x2=[0,1,2,1,0,0,0,1,2,1,0,0];

p=length(x1);

q=length(x2);

n=p+q-1;

a= 0 : q-1;

y2(a+1)=x2(q-a);

for n=1 : p+q-1

k=-q+n:1:-1+n;

subplot(3,1,2)

stem(k,y2)

title('x2(n-m)');

axis([-16,16,0,24]);

以上部分是实现翻转并移位,在设计中是将序列x2进行翻转和移位。

y=conv(x1,x2);

t=1:1:n

h(t)=y(t);

subplot(3,1,3)

t=0:n-1;

stem(t,h);

title('线性卷积y(n)')

axis([-16,16,0,24]);

pause(1)

end

以上整个部分就是实现线性卷积的过程。

subplot(3,2,1)

stem(x1);

title('x1(m)')

axis([0,15,0,1]);

pause(1)

subplot(3,2,2)

stem(x2);

title('x2(m)')

axis([0,15,0,2]);

pause(1)

end

3.1.2圆周卷积程序实现

对于循环卷积,要求我们进行判断并根据情况做不同的分析:

x1=[1,1,1,1,0,0,1,1,1,1,0,0];

x2=[0,1,2,1,0,0,0,1,2,1,0,0];

p=length(x1);q=length(x2);k=max(p,q);%p

if k>N

if p

x11=[x1,zeros(1,N-p)];

n=0:1:N-1;

x22(n+1)=x2(n+1);

elseif p==q|p>N

n=0:1:N-1;

x11(n+1)=x1(n+1);

x22(n+1)=x2(n+1);

else disp('错误,x1的长度要比x2短')

end

3.2结果及分析

开始运行程序,会进入主菜单,按照提示进行选择:

请输入x1:[1,1,1,1,0,0,1,1,1,1,0,0]

请输入x2:[0,1,2,1,0,0,0,1,2,1,0,0]

(1)、动态演示2序列的线性卷积

图2   线性卷积结果

(2)、动态演示2序列的10点的圆周卷积

图3  圆周卷积结果

4结论

针对卷积演示的程序进行设计,并给出了两个示例序进行线性卷积和圆周卷积的翻转、移位、乘机、求和的过程等。圆周卷积是将所有数据限定一个固定的长度。设线性卷积和圆周卷积有用信号部分长度分别为L、P,则当圆周卷积长度大于等于L+P-1时两者等价。

线性卷积和圆周卷积对运算有不同的要求:线性卷积的对象可以是有限长或无限长非周期序列,若两个序列的长度分别为M和N,则卷积后的序列长度为L=M+N-1。圆周卷积的对象是两个同长度(若长度不同可用补零的方法达到同长度)的有限长序列,圆周卷积的结果也是同一长度的有限长序列。

它们的关系是:圆周卷积是线性卷积L点周期延拓的主值区间。

5心得体会

通过本次论文设计巩固了所学过的数字信号处理课程的有关知识,同时也对matlab这个软件有了更深的了解,它与数字信号处理这门课程之间有着紧密关系,matlab中是采用数组和距阵的方式处理数据,如何将数字信号处理有关的资料以数组和距阵进行编程是我们学习的一个方面,通过这次的课程设计,让我发现了数字信号处理在matlab中的应用,同时也激发了我利用这软件来实现数字信号处理有关问题的兴趣。

本次设计中,有机地结合了理论与实践,既考察了我们对理论知识的掌握情况,还反映出我们实际动手能力和编程能力,更主要的是它激起我们创新思维,提高了自己独立分析问题和解决问题的能力,这在无形中以及提高了我各方面的能力。无论是在知识上,还是在思想上都给我烙下了深刻的印象。

完整的Word格式文档51黑下载地址:

2018-6-22 17:02 上传

点击文件名下载附件

下载积分: 黑币 -5

matlab卷积画图,基于MATLAB的卷积演示系统课程设计相关推荐

  1. 基于SSH开发物流仓储调度系统 课程设计 大作业 毕业设计

    基于SSH开发物流仓储调度系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+MYSQL数据库 运行效果图:  基于SSH开发物流仓储调度 ...

  2. 基于PLC高层楼房供水系统课程设计毕业设计

    设计目的 (1)能够检测到水箱的水位并用指示灯显示. (2)由检测到水箱的水位,实现3台电机的供水要求. (3)设计plc程序. 设计要求 (1)确定输入/输出设备. (2)PLC I/O点分配,并绘 ...

  3. matlab演示系统,基于Matlab的通信原理演示系统的设计与应用

    基于 Matlab的通信原理演示系统的设计与应用 李 强 , 明 艳 , 吴坤君 (重庆邮电大学 通信学院 , 重庆 400065) 摘 要 : 利用 Matlab图形用户界面的开发环境和强大的通信仿 ...

  4. 基于matlab的回波,基于matlab回波的产生与消除课程设计

    <基于matlab回波的产生与消除课程设计>由会员分享,可在线阅读,更多相关<基于matlab回波的产生与消除课程设计(11页珍藏版)>请在人人文库网上搜索. 1.信号与系统课 ...

  5. MATLAB STK构建卫星轨道姿态控制仿真演示系统

    MATLAB & STK构建卫星轨道姿态控制仿真演示系统 杜耀珂 郑科宇 摘要:通过在MATLAB中建立卫星的轨道运动和姿态动力学仿真模型就可以分析在不同的控制作用下,卫星的轨道和姿态的变化情 ...

  6. matlab 图像矢量量化,MATLAB环境下基于矢量量化的说话人识别系统(1)

    第21卷第6期湖 北 工 业 大 学 学 报2006年12月 Vol.21No.6 Journal of Hubei Univer sity of Technology Dec.2006 [收稿日期] ...

  7. matlab 与非门 simulink,基于MATLAB的时序逻辑电路设计与仿真

    <基于MATLAB的时序逻辑电路设计与仿真>由会员分享,可在线阅读,更多相关<基于MATLAB的时序逻辑电路设计与仿真(19页珍藏版)>请在人人文库网上搜索. 1.成绩 MAT ...

  8. 「电子万年历matlab仿真」——基于Matlab的电子万年历仿真实现

    「电子万年历matlab仿真」--基于Matlab的电子万年历仿真实现 作为一种具有时间显示.日期查询.闹钟提醒等功能的电子产品,电子万年历已经成为了人们日常生活中不可或缺的一部分.而在现代科技的发展 ...

  9. 不可逆调速matlab,双闭环不可逆直流调速系统课程设计(matlab仿真设计).pdf

    双闭环不可逆直流调速系统课程设计(matlab仿真设计).pdf a1a0a2a3a4a5a6a7a8a9a10a11a12a13a14a15a16a18a17a19a20a21a19a22a23a2 ...

最新文章

  1. Shift+F5后,vc6不可以退出调试状态,程序不能再次执行
  2. 数据库更新记录,但程序查不到新记录问题
  3. mysql的联合查询差集_MySQL实现差集(Minus)和交集(Intersect)
  4. Android library projects cannot be launched问题的解决
  5. 解决:VScode 汉化后 、设置中文后 还显示英文的问题
  6. 【剑指offer】面试题33:二叉搜索树的后序遍历序列
  7. leetCode —— 1200.最小绝对差
  8. android 软键盘 状态,Android监听软键盘状态
  9. Mac下安装Flink的local模式(flink-1.0.2)
  10. 苹果怎么给软件加密码_用了2年苹果手机,才知道有这几个功能,钱没花冤枉,好用!!...
  11. web前端基础之JS
  12. Okhttp之RealConnection建立链接简单分析
  13. 将MinimalLinux安装在U盘中
  14. 区块链 xuperchain 同步模式 纯异步模式 异步阻塞模式 怎么启动
  15. Linux下更改Python的软链接
  16. matlab 带通滤波函数,MATLAB窗函数实现带通滤波器
  17. 自学iOS开发系列----UI(视图编程入门:UIView)
  18. 性价比最高处理器和国产处理器I.MX6UL/A40I/T3对比
  19. vue渲染大量数据优化_vue大数据表格卡顿问题的完美解决方案
  20. python小游戏_课程设计_期末大作业——小游戏合集(含源代码)

热门文章

  1. Libco是一个C/C++协程库,在微信服务中广泛使用
  2. linux:errno与signum:错误码与信号
  3. 基于Linux内核红黑树的TR069参数解析工具:树形结构+CPE RPC支持
  4. 疫情下的远程办公:理解Linux虚拟网络设备之tun/tap
  5. exp导出excel oracle_OracleToExcel_Oracle导出excel数据(OracleToExcel)下载 v3.1 官方版 - 121下载站...
  6. python判断当前时间是否在两个时间之间_Python 判断时间是否在时间区间内的实例...
  7. nodejs文件写入
  8. 带哨兵节点的链_BNC公链 | IPFS:区块链“不可能三角”的可能解
  9. 博物馆奇妙夜java_博物馆奇妙夜 2 Night At The Museum
  10. [Unity脚本运行时更新]C#7新特性