第一范文网 - 专业文章范例文档资料分享平台

数字信号处理讲义(一)卷积

来源:用户分享 时间:2025/5/23 17:41:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

第一部分 卷积

【目的】

1.加深理解卷积的重要作用,更好的利用卷积进行数字信号处理。 2.掌握循环卷积和线性卷积两者之间的关系。

【原理】

卷积的定义:g(t)?f1?t??f2?t??对于离散序列,则有:

????f1???f2?t???d?

y(n)?x(n)*h(n)?m????x(m)h(n?m)

??当h(n),x(n)是一个长度为N的序列,则有:

y?n??h?n??x?n???h?m?x?n?1?m?;

m?1n当h(k)的长度为K,x(m)长度为M,且K?M时,则为:

y?n??h?k??x?m???h?k?x?n?1?k? ;

k其中k的取值范围为:[max(1,n+1-M),min(n,K)],其中n范围为[1,K+M-1];

在高等数学中,函数f(x)的积分

????f(x)dx的图形解释就是曲线f(x)与x轴之间所

包围的面积的代数和。卷积也是积分,因此与一般积分相似,具有求曲线与横轴间所包围面积的含义。但是被积函数是f1???f2?t???,且卷积是对变量?进行积分,因此卷积的结果

g?t?是一个时间变量t的函数。两函数卷积就是把其中一个函数沿纵轴反转,然后再把反转

后的图形向右平移t,求出该时刻二图形乘积所形成的曲线下的面积,就是该时刻的卷积值。随着t值不断增大,反转后的曲线不断向右平移,就可以得到t为任意值时的卷积值。离散卷积的编程思想与此类同,将一个序列反转,然后求m不同时各采样点的乘积的和。

【示例】

鉴于卷积程序是数字处理的第一次实验,只给出卷积的一个简单示例程序,也可参考Matlab库文件中的conv.m文件。

示例程序如下:

function y=conn(x1,x2) %conn函数实现输入序列x1和x2的循环卷积,fn为输出序列 L=length(x1); %定义输入x1序列的长度

M=length(x2); %定义输入x2序列的长度 for n=1:L+M-1

y(n)=0; for m=1:M k=n-m+1;

if (k>=1&k<=L)

y(n)=y(n)+x2(m)*x1(k); %将x1反转与x2对应相乘,并求和 end end end

此程序调用格式为y=conn(x,h)

输入两个数据长度相同的数据,调用此函数即可。任意输入两个数据,如图1中(a)和(b)的两个图形所示,调用Matlab内的conv程序,得到的结果如图1中(c)所示,调用编写conn程序,得到的结果如图1中(d)所示,可以看到两个图形相同,说明编写的程序是正确的。(参考给定的conv_ph.m文件和conn.m文件)

子波x10.50-0.5-1s00.10.20.3(a)反射序列x20.40.50.620-2x0204060100120140(b)调用Matlab卷积程序结果8016018020010-1z050100200250(c)调用自编卷积程序结果15030035040010-1y050100150200(d)250300350400

图1 输入两个信号的卷积示意(离散图)

子波x10.50-0.5-1s00.10.20.3(a)反射序列x20.40.50.620-2x0204060100120140(b)调用Matlab卷积程序结果8016018020010-1z050100200250(c)调用自编卷积程序结果15030035040010-1y050100150200(d)250300350400

图2 输入两个信号的卷积示意

【作业要求】

1.了解实验原理;

2.根据给定的两个序列,或者自己定义两个信号序列,编写卷积程序; 3.记录调试运行情况及所遇问题的解决方法; 4.给出实验结果(与示例的内容相似)。

【附录】

程序conn(卷积的计算程序):

function fn=conn(x1,x2) %conn函数实现输入序列x1和x2的循环卷积,fn为输出序列 L=length(x1); %定义输入x1序列的长度 M=length(x2); %定义输入x2序列的长度 for n=1:L+M-1

fn(n)=0; for m=1:M k=n-m+1; if (k>=1&k<=L)

fn(n)=fn(n)+x2(m)*x1(k); %将x1反转与x2对应相乘,并求和 end end end

程序conv_ph(调用卷积函数实现两个序列的卷积): %%%%%%%%%%%%%%%%%%定义一个子波%%%%%%%%%%%% Nt=201; %采样数 dt=3e-3; %采样间隔

ftm=25;fsm=0.05; %子波基本参数 time_max=Nt*dt; %最大采样时间 time=dt:dt:time_max; %采样时间

ht=-(1-2*pi^2*ftm^2*((time).^2)).*exp(-pi^2*ftm^2*(time).^2); subplot(2,2,1),plot(time,ht,'g');

xlabel('图(a)');ylabel('s');title('子波x1') %%%%%%%%%%%%%%%%%反射序列%%%%%%%%%%%%%%%%% for ii=1:Nt

if ii==15|ii==18|ii==60|ii==131|ii==183 t=1.2*sin(2*pi*ii/100); else t=0; end x(ii)=t; end

subplot(2,2,2), stem(x);

xlabel('图(b)');ylabel('x');title('反射序列x2') %%%%%%%%%%%%%%%卷积结果%%%%%%%%%%%%%%%%%%% z=conv(ht,x); subplot(2,2,3), plot(z,'r');

xlabel('图(c)');ylabel('z');title('调用Matlab卷积程序结果') y=conn(ht,x); subplot(2,2,4), plot(y,'b');

xlabel('图(d)');ylabel('y');title('调用自编卷积程序结果')

function y=conn(x1,x2) %conn函数实现输入序列x1和x2的循环卷积,fn为输出序列 L=length(x1); %定义输入x1序列的长度 M=length(x2); %定义输入x2序列的长度 for m=1:M y(n)=0;

for n=1:L+M-1 k=n-m+1; if (k>=1&k<=L)

y(n)=y(n)+x2(m)*x1(k); % end end end

将x1反转与x2对应相乘,并求和

搜索更多关于: 数字信号处理讲义(一)卷积 的文档
数字信号处理讲义(一)卷积.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6bxmh1z4ml4i6jo0x0fg_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top