基于Matlab实现线性卷积等精要.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Matlab实现线性卷积等精要

线性卷积与循环卷积 作品目的 通过matlab的强大功能展示线性卷积和循环卷积过程中方方面面的计算和变化,让大家对这两种卷积有一个更加完美的认识。 概念简介 卷积是一种典型的乘累加运算。 线性卷积 线性卷积是对线性移不变(LSI)系统的输入输出关系的描述,体现系统的特性。 线性卷积的表达式为 一般情况,现实的系统为因果系统,有k0时,恒有h(k)=0,则 若x(n)是一个N点序列,h(n)是一个m点序列,则卷积的结果y(n)将是L=N+M-1点的序列。设x1(n) 和x2(n) 是两个长度为 L、M的有限长序列,它们的 N点循环卷积x3(n) 定义为: 注意:其中N=Max{L,M}如果其中一个序列(或者两个序列)的长度没有所求N点循环卷积的长度长,那在该序列后面补零,直到长度达到N[5,4,3,2,1],脉冲响应h(n)=[1,1,1,1]为列进行演示。 计算输入序列和脉冲响应的长度。 画出补零后的输入序列和脉冲响应 设计一个循环,在循环中实现反转、位移和计算。并画出反转后的图像变化和卷积图像,将每一次移位结果保存为fig图。 最后将上一步所生成的所有fig图合起来生成一张gif图 程序展示: clear; clc; close all; (1)(2) xn=[5,4,3,2,1]; M=length(xn);%输入任意序列并计算长度M hn=[1,1,1,1]; N=length(hn);%输入任意脉冲响应并计算长度N m=[-(M-1):M+N-2];%设置代换变量的范围以便x(m)翻转和移位 (3) xm=[zeros(1,M-1),xn,zeros(1,N-1)];%补零以便与m对应绘图 subplot(2,2,1);stem(m,xm,r.);%%绘输入序列x(m) ylabel(x(m)); grid on; title((a)输入序列x(m)); hm=[zeros(1,M-1),hn,zeros(1,M-1)];%补零以便与m对应绘图 subplot(2,2,2);stem(m,hm,r.);%绘脉冲响应 ylabel(h(m)),grid,title((b)脉冲响应h(m));%%加标签网格和标题 yn=zeros(1,2*M+N-2);%卷积输出初始化 (4) for n=0:M+N-2;%逐个计算卷积输出 if n==0; xmfy=[fliplr(xn),zeros(1,M+N-2)];%实现翻转 else for k=M:-1:1; xmfy(k+n)=xmfy(k+n-1); end xmfy(n)=0; xmfy;%实现翻转后移位并显示 end subplot(2,2,3);stem(m,xmfy,b.);%%绘制翻转移位序列 ylabel(x(n-m)), grid,title((c)x(n-m));%%加标签网格和标题 yn(M+n)=sum(xmfy.*hm);%计算第n位输出并与m位置对应 subplot(2,2,4);stem(m,yn,r.);%%绘制卷积输出序列 axis([min(m),max(m),min([0,conv(xn,hn)]),max([0,conv(xn,hn)])]);%%控制绘图坐标 ylabel(y(n)); grid on;title((d)卷积输出y(n));%%加标签网格和标题 pause(.5); drawnow, picname=[num2str(n) .fig];%保存的文件名:如i=1时,picname=1.fig hold on % 写后面的字时,不把前面的字冲掉 saveas(gcf,picname) end yn; stepall=M+N-2; (5) for i=1:stepall picname=[num2str(i) .fig]; open(picname) set(gcf,outerposition,get(0,screensize));% matlab窗口最大化 frame=getframe(gcf); im=frame2im(frame);%制作gif文件,图像必须是index索引图像 [I,map]=rgb2ind(im,20); if i==1 imwrite(I,map,xianxingjuanji.gif,gif, Loopcount,inf,DelayTime,0.5); elseif i==stepall imwrite(I,map,xianxingjuanji.gif,gif,WriteMode,append,DelayTime,0.5);

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档