收藏 分销(赏)

数字信号处理实验线性卷积圆周卷积.doc

上传人:人****来 文档编号:4717621 上传时间:2024-10-10 格式:DOC 页数:7 大小:67.52KB 下载积分:6 金币
下载 相关 举报
数字信号处理实验线性卷积圆周卷积.doc_第1页
第1页 / 共7页
数字信号处理实验线性卷积圆周卷积.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
大连理工大学实验报告 学院(系): 电信 专业: 生物医学工程 班级: **1101 姓 名: **** 学号: 201181*** 组: ___ 实验时间: 实验室: 实验台: 指导教师签字: 成绩: 实验一 线性卷积和圆周卷积 一、实验程序 1.给出序列x=[3,11,7,0,-1,4,2],h=[2,3,0,-5,2,1];用两种方法求两者的线性卷积y,对比结果。 a) 直接调用matlab内部函数conv来计算。 b) 根据线性卷积的步骤计算。 clear; clc; x=[3 11 7 0 -1 4 2];n1=0:1:length(x)-1; h=[2 3 0 -5 2 1];n2=0:1:length(h)-1; y=conv(x,h);n3=0:1:length(x)+length(h)-2; figure(1); subplot(121);stem(n1,x,'.');axis([0 6 -15 15]);title('x(n)序列');grid; subplot(122);stem(n2,h,'.');axis([0 5 -10 10]);title('h(n)序列');grid; figure(2); subplot(121);stem(n3,y,'.');axis([0 12 -60 60]);title('调用conv函数的线性卷积后序列');grid; N=length(x);M=length(h);L=N+M-1; for(n=1:L) y1(n)=0; for(m=1:M) k=n-m+1; if(k>=1&k<=N) y1(n)=y1(n)+h(m)*x(k); end; end; end; subplot(122);stem(n3,y1,'*');axis([0 12 -60 60]);title('按步骤计算的线性卷积后序列');grid; 结果 2.卷积后结果y=[ 6 , 31 , 47 , 6 , -51 , -5 , 41 , 18 , -22 , -3 , 8 , 2]。 将函数conv稍加扩展为函数conv_m,它可以对任意基底的序列求卷积。格式如下: function [y,ny]=conv_m(x,nx,h,nh) % 信号处理的改进卷积程序 % [y,ny]=conv_m(x,nx,h,nh) % [y,ny]=卷积结果 % [x,nx]=第一个信号 % [h,nh]=第二个信号 程序如下: function [y,ny]=conv_m(x,nx,h,nh) ny=nx+nh-1; for(n=1:ny) y(n)=0; for(m=1:nh) k=n-m+1; if(k>=1&k<=nx) y(n)=y(n)+h(m)*x(k); end; end; end; 通过如下程序调用函数conv_m clear; clc; x=[3,11,7,0,-1,4,2]; h=[2 3 0 -5 2 1]; nx=length(x); nh=length(h); [y,ny]=conv_m(x,nx,h,nh); n=0:1:ny-1; subplot(121);stem(n,y,'.');axis([0 12 -60 60]);title('调用conv_m函数的线性卷积后序列');grid; 结果如下 与题1中所得结果相同。 3.创建函数circonv,来实现序列的圆周卷积,格式如下: function y=circonv(x1,x2,N) 程序如下 function y=circonv(x1,x2,N) x_1=[x1 zeros(1,N-length(x1))]; h_1=[x2 zeros(1,N-length(x2))]; y1=conv(x_1,h_1); z_1=[zeros(1,N) y1(1:(N-1))]; z_2=[y1((N+1):(2*N-1)) zeros(1,N)]; z=z_1(1:(2*N-1))+z_2(1:(2*N-1))+y1(1:(2*N-1)); y=z(1:N); 通过如下函数调用circonv clear; clc; x1=[1 0 1 2 1]; x2=[1 1 0 1 2]; y=circonv(x1,x2,5); subplot(121);stem((0:4),y,'.');axis([0 5 0 8]); title('圆周卷积');grid; 得到结果如下 4.求序列和,()的线性卷积 a) N个点的圆周卷积 b) 3N/2个点的圆周卷积 c) 2N-1个点的圆周卷积 d) 用FFT变换实现其圆周卷积 本次试验中调用了前面编写的circonv函数。 clear; clc; close all; n=-5:50; N=56; x=heaviside(n)-heaviside(n-10); h=0.9.^n.*heaviside(n); N1=N; x1=[x zeros(1,N-length(x))]; h1=[h zeros(1,N-length(h))]; X1=fft(x1); H1=fft(h1); Y1=X1.*H1; y1=ifft(Y1); figure subplot(131);stem((0:N-1),y1,'.');axis([0 120 0 8]); title('FFT的N点圆周卷积');grid; N2=(3*N)/2; x2=[x zeros(1,N2-length(x))]; h2=[h zeros(1,N2-length(h))]; X2=fft(x2); H2=fft(h2); Y2=X2.*H2; y2=ifft(Y2); subplot(132);stem((0:N2-1),y2,'.');axis([0 120 0 8]); title('FFT的3*N/2点圆周卷积');grid; N3=2*N-1; x3=[x zeros(1,N3-length(x))]; h3=[h zeros(1,N3-length(h))]; X3=fft(x3); H3=fft(h3); Y3=X3.*H3; y3=ifft(Y3); subplot(133);stem((0:N3-1),y3,'.');axis([0 120 0 8]); title('FFT的2*N-1点圆周卷积');grid; y=circonv(x,h,N); figure subplot(131);stem((0:N-1),y,'.');axis([0 120 0 8]); title('N点圆周卷积');grid; y=circonv(x,h,3*N/2); subplot(132);stem((0:(3*N)/2-1),y,'.');axis([0 120 0 8]); title('3/2*N点圆周卷积');grid; y=circonv(x,h,2*N-1); subplot(133);stem((0:2*N-1-1),y,'.');axis([0 120 0 8]); title('2N-1点圆周卷积');grid; 二、实验总结 对于有限长序列,存在两种形式的卷积:线性卷积与圆周卷积。由于圆周卷积可以采用DFT的快速算法——快速傅里叶变换进行运算,运算速度上有很大的优越性。 其中,设计线性卷积有4个步骤,反折、移位 、相乘、求和,而循环卷积则是通过循环移位后得到的矩阵与序列相乘。根据上DSP课上老师讲的求法,画出了思路的流程图,然后根据流程图写出程序,事半功倍。 将结果与直接调用matlab自带的函数比较,结果显示,自己设计的程序是正确的。 通过这次实训,我对线性卷积和循环的定义、原理、以及实现方法都有了深入的认识。同时也对MATLAB软件产生了更加浓厚的兴趣。在做完本次实训要求的线性卷积之后,我运用了同样的思路,设计出了循环卷积,算是对本次实训的一个扩展,同时也提高了自己的编程水平和对matlab的运用。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服