DSP课设_基于重叠相加法圆周卷积的实现(2)
(5)对序列进行分段调用juanji()函数计算圆周卷积
(6)各段重叠相加
(7)取出实际的输出序列
方案2:
(1)首先取圆周卷积的周期L(即进行L点的快速傅里叶变换)
(2)计算每一分段的大小N
(3)填充序列使得循环中对序列的索引不会超出范围
(4)计算分段数K
(5)对序列进行分段调用juanji()函数计算圆周卷积
(6)各段重叠相加
(7)取出实际的输出序列
数字信号处理课程设计_基于重叠相加法圆周卷积的实现
3.2程序设计流程图
整体程序包含主程序与卷积函数、重叠相加函数两大部分。
函数juanji()流程图如下
此函数用于对X1和X2两序列进行快速傅里叶变换后进行乘积,之后再进行反变换后恢复到时域结果。
数字信号处理课程设计_基于重叠相加法圆周卷积的实现
chongdie(x,h,N)函数流程图如下:
方案1: 方案2:
3.3方案比较
方案1和方案2的区别在于:在方案1中由已知的长序列x(n)分段大小N、短序列长度M依据公式计算L N+M-1圆周卷积周期L。而在方案2中由已知的圆周卷积周期L、短序列长度M依据公式计算长序列x(n)的分段大小。
比较这两种方案可以知道,方案1中如果L直接取L=N+M-1,则L的值不一定是2的n次方,而接下来的要进行的L点快速傅里叶变换中,L的值需要为2的n次方才能正确计算。所以方案1的必须要求取恰当的N值以使L点满足要求。方案2中可以直接取L为恰当的值从而满足快速傅里叶变换的要求,所以方案2比方案1的适用范围更大。
数字信号处理课程设计_基于重叠相加法圆周卷积的实现
4 程序代码
主程序:
x1=[1,2,3,4,5,5,4,3,2,1];
x2=[1,0,1];
L=8;
y=chongdie(x1,x2,L);
s=1:10;subplot(2,2,1);
stem(s,x1)
r=1:3;subplot(2,2,2);
stem(r,x2)
u=1:13;subplot(2,2,3);
stem(u,y)
函数juanji():
function y=juanji(x1,x2,L)
if length(x1)>L %如果x1长度大于L则产生错误
error('L must not be less than length of x1');
end
if length(x2)>L %如果x2长度大于L则产生错误
error('L must not be less than length of x2');
end
X1k=fft(x1,L); %对x1进行L点FFT计算
X2k=fft(x2,L); %对x2进行L点FFT计算
Yk=X1k.*X2k; %频域相乘
y=ifft(Yk); %反变换得卷积结果
if (all(imag(x1)==0))&(all(imag(x2)==0))
y=real(y);
end
数字信号处理课程设计_基于重叠相加法圆周卷积的实现
函数chongdie():
方案1:
function[y]=chongdie(x,h,N)
Lenx=length(x); %取x(n)的长度
M=length(h); %取h(n)的长度
L=N+M-1; %计算圆周卷积的周期L使其不发生混叠
x=[x,zeros(1,N-1)]; %填充序列使得循环中对序列的索引不会超出围 K=floor(Lenx/N);
y=zeros(1,Lenx+L-1); %确定分段数K
for i=0:1:K
ix=i*N;
x_seg=x(ix+1:ix+N); %将x(n)分段
y_seg=juanji(x_seg,h,L); %调用函数juanji()计算圆周卷积
y(ix+1:ix+L)=y(ix+1:ix+L)+y_seg(1:L); %各段重叠相加
end
y=y(1:Lenx+M-1); %取出实际的输出序列
方案2:
function[y]=chongdie(x,h,L)
Lenx=length(x); %取x(n)的长度
M=length(h); %取h(n)的长度
N=L-M+1; %计算分段大小N
x=[x,zeros(1,N-1)]; %填充序列使得循环中对序列的索引不会超出围 K=floor(Lenx/N); %确定分段数K
y=zeros(1,Lenx+L-1);
for i=0:1:K
ix=i*N;
x_seg=x(ix+1:ix+N); %将x(n)分段
y_seg=juanji(x_seg,h,L); %调用函数juanji()计算圆周卷积 y(ix+1:ix+L)=y(ix+1:ix+L)+y_seg(1:L); %各段重叠相加
end
y=y(1:Lenx+M); %取出实际的输出序列
数字信号处理课程设计_基于重叠相加法圆周卷积的实现
5 程序运行结果与分析
输入序列和周期L
x1=[1,2,3,4,5,5,4,3,2,1];
x2=[1,0,1];
L=8;
运算结果:1
2 4 6 8 9 9 8 6 4 2 1
由程序运行结果与线性卷积结果比较可以知道程序计算结果正确的。
数字信号处理课程设计_基于重叠相加法圆周卷积的实现
心得体会
作为电子信息工程系的学生,数字信号处理这门课程是其他很多课程的基础,所以学好数字信号处理这门课是非常重要的。而MATLAB这款软件对数字信号处理的建模、编程、分析、实现有极大的帮助作用,所以我们应该掌握使用MATLAB编程来实现对数字信号的分析处理。
此次我得到的课设题目是:基于重叠相加法圆周卷积的实现。拿到课设题目后,我仔细研究了与题目相关的原理,包括线性卷积、周期卷积、圆周卷积、重叠相加法、离散傅里叶变换DFT、快速傅里叶变换FFT等原理知识,弄清楚了它们之间的关系。通过这次课程设计,我不仅顺利完成课程设计的要求,而且在课程设计过程中通过对相关原理的回顾,对各相关原理之间的关系有了脱胎换骨般的认识,也意识到此前学到的理论知识是多么的浅薄。
在和同组同学一起讨论基于重叠相加法的圆周卷积原理后,我开始了利用MATLAB来实现这个功能。在编写程序的过程中,我查阅了很多有关MATLAB的编程知识,通过整合所查阅到的编程知识,结合先前研究的基于重叠相加法的圆周卷积原理,我设计了具有此功能的MATLAB函数。在设计时我遇到了不少的问题,刚开始时我先设定分段长度N,然后由N来求卷积周期L。但是在程序运行过程中我发现算法具有很大的局限性。通过仔细揣摩这其中的问题,原来是我忽略了FFT运算的条件。所以我制定了第二个方案,先设定卷积的周期L,然后由L来求分段长度N,这样程序的适用范围就扩大了。为了提高程序的适用性,我不断的对程序进行修改和测试,以求能够达到更好的效果,这个过程让我体会到了编程解决问题的乐趣。
通过本次课程设计,我对书本知识有了更深刻的理解,并应用课本的理论知识,结合相关软件,设计解决问题的算法。从而提高了由知识转换为技能的能力,提高了自己的实践能力。通过与同学的互相沟通,不仅使各自的知识得到了扩充,而且从中得到了很多的启示,这次课程设计让人受益匪浅。
数字信号处理课程设计_基于重叠相加法圆周卷积的实现
参考文献
【1】《数字信号处理》,刘泉、阙大顺、郭志强编著,电子工业出版社,2009
【2】《信号与系统》,刘泉,江雪梅编著,高等教育出版社,2006
【3】《MATLAB从入门到精通》,周建兴、岂兴明等编,人民邮电出版社,2008
【4】《MATLAB实用教程》,徐金明、张孟喜、丁涛编, …… 此处隐藏:1572字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




