matlab实现线性卷积和循环卷积

合集下载

周期卷积、循环卷积和线性卷积比较

周期卷积、循环卷积和线性卷积比较

数字信号处理实验报告黎美琪 2 13通信2实验一名称:周期卷积、循环卷积和线性卷积比较 一、实验目的1.理解周期卷积、循环卷积、线性卷积的定义2.用图像显示上述几种卷积并对其进行直观的比较 二、实验步骤 自行设定:)它们的线性卷积()求它们的循环卷积(求它们的周期卷积(两个有限长序列3)8(2)8)1(2012,81,1129,1)(,2012,81,0129,8)(21==⎩⎨⎧≤≤≤≤-≤≤=⎩⎨⎧≤≤≤≤≤≤-=N N n n n n x n n n n n x实验代码:(大部分语句为图像显示处理)%循环卷积&线性卷积&周期卷积 %%线性卷积 figure(1);set(gcf, 'color', 'w')%将图的背景设置为白色x1=[zeros(1,8),[1:4],zeros(1,4),zeros(1,8)];%原有限长序列x1(n ) x2=[zeros(1,8),ones(1,4),zeros(1,4),zeros(1,8)] ; %原有限长序列x2(n ) L=length(x1)%长度L M=length(x2)%长度My1=conv(x1,x2) %线性卷积 subplot(311) stem(x1);title('有限长序列x1(n )') axis([1 L 0 5]) subplot(312) stem(x2);title('有限长序列x2(n )') axis([1 M 0 1]) subplot(313) stem(y1);grid on ; title('线性卷积')axis([1 L+M-1 0 11]) %%循环卷积(圆周卷积) figure(2);set(gcf, 'color', 'w')%将图的背景设置为白色%x11=[[1:4],zeros(1,4),[1:4],zeros(1,4),[1:4],zeros(1,4)];x11=[[1:4],zeros(1,2),[1:4],zeros(1,2),[1:4],zeros(1,2),[1:4],zeros(1,2)];y2=conv(x2,x11)P=length(x22)%长度Psubplot(311);stem(x11);title('有限长序列x1的周期延拓x11(n)')axis([1 L 0 5])subplot(312)stem(x2);title('有限长序列x2(n)')axis([1 M 0 1])subplot(313)stem(y2);grid on;title('循环卷积')axis([1 P+M-1 0 11])%%周期卷积figure(3);set(gcf, 'color', 'w')%将图的背景设置为白色x22=[ones(1,4),zeros(1,4),ones(1,4),zeros(1,4),ones(1,4),zeros(1,4)]; y2=conv(x1,x22)Q=length(x22)%长度Qsubplot(311)%stem(x11);stem(x11);%title('有限长序列x1(n)')title('有限长序列x1的周期延拓x11(n)')axis([1 L 0 5])subplot(312);stem(x22);title('有限长序列x2的周期延拓x2(n)')axis([1 Q 0 1])subplot(313)stem(y2);grid on;title('周期卷积')%axis([1 L+Q-1 0 15])axis([1 P+Q-1 0 11])(一)线性卷积1.线性卷积步骤1)将序列x2(n)翻褶2)平行向右移位3)被卷积两序列对应序号值相乘,再相加X2(-m)X2(1-m) 1 Y(8)=1X2(2-m)000011 11 Y(9)=3X2(3-m)00001 111 Y(10)=6X2(4-m)0000 1111 Y(11)=10X2(5-m)000 01111 Y(12)=9X26-m)00 001111 Y(13)=7X2(7-m) 0 Y(14)=4X2(8-m) Y(15)=0X2(9-m) 0000111 1 Y(6)=0X2(10-m) 000011 11 Y(17)=0X2(11-m) 00001 111 Y(18)=0X2(12-m) 0000 1111 Y(19)=0X2(13-m) 000 01111 Y(20)=0X2(14-m) 00 001111 Y(21)=0X2(15-m) 0 Y(22)=0注意:为方便比较几种不同卷积的结果,设定的序列的初始位置在n=9。

循环卷积与线性卷积的matlab实现

循环卷积与线性卷积的matlab实现

循环卷积与线性卷积的实现1、实验目的:(1)进一步理解并掌握循环卷积与线性卷积的概念。

(2)理解掌握二者的关系。

三、实验原理两个序列的N点循环卷积定义为从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N 点序列的N点循环卷积的结果仍为N点序列,而他们的线性卷积的结果的长度则为2N-1;循环卷积对序列的移位采取循环移位,而线性卷积对序列采取线性位移。

正式这些不同,导致了线性卷积和循环卷积有不同的结果和性质。

循环卷积和线性卷积虽然是不用的概念,但是它们之间有一个有意义的公式联系在一起其中也就是说,两个序列的N点循环卷积是他们的线性卷积以N为周期的周期延阔。

设序列的长度为,序列的长度为,此时,线性卷积结果的序列的点数为;因此如果循环卷积的点数N小于,那么上述周期性延阔的结果就会产生混叠,从而两种卷积会有不同的结果。

而如果N满足的条件,就会有这就会意味着在时域不会产生混叠。

因此,我们得出结论:若通过在序列的末尾填充适当的零值,使得和成为店序列,并作出这两个序列的循环卷积与线性卷积的结果在范围内相同。

根据DFT循环卷积性质中的卷积定理便可通过两种方法求两个序列的循环卷积:一是直接根据定义计算;二是根据性质先分别求两个序列的N点DFT,并相乘,然后取IDFT以得到循环卷积。

第二种方法看起来要经过若干个步骤,但由于求序列的DFT和IDFT都有快速算法,因此它的效率比第一种方法要高得多。

同样,根据线性卷积和循环卷积的关系,可以通过计算循环卷积以求得线性卷积,提高计算序列线性卷积的效率。

4、实验内容输入程序序列如下:n=[0:1:4];m=[0:1:3];x1=1+n;x2=4-m; %生成函数x1和x2L1=length(x1)-1;L2=length(x2)-1; %取函数的长度y1=conv(x1,x2); %直接用函数conv计算线性卷积n1=[0:1:L1+L2];subplot(3,1,1);stem(n1,y1) %绘制线性卷积图形xlabel('n');ylabel('y(n)'); %标注x、y轴N2=5; %求5点圆卷积if length(x1)>N2error('N必须大于序列x1的长度')endif length(x2)>N2error('N必须大于序列x2的长度')end %以上语句判断两个序列的长度是否小于N X21=fft(x1,N2); %作序列1的FFTX22=fft(x2,N2); %作序列2的FFTy2=ifft(X21.*X22); %求两序列的循环卷积(时域)n2=[0:1:N2-1];subplot(3,1,2);stem(n2,y2) %绘制两序列循环卷积图形axis([0,7,0,40]) %修改x、y轴长度N3=8if length(x1)>N3error('N必须大于序列x1的长度')endif length(x2)>N3error('N必须大于序列x2的长度')endx31=[x1,zeros(1,N3-length(x1))]x32=[x2,zeros(1,N3-length(x2))]X31=fft(x31)X32=fft(x32)y3=ifft(X31.*X32)n3=[0:1:N3-1]subplot(3,1,3);stem(n3,y3)将程序输入MATLAB运行结果如下:MATLAB运行显示的图形为:五、实验心得:本次实验对我意义很大,让我熟练的运用了matlab软件。

实验二 线性卷积与循环卷积

实验二 线性卷积与循环卷积

实验二线性卷积与循环卷积(1)线性卷积n=[0:1:3]%N1=length(n);%xnn=ones(1,N1);xn=(n+1).*((n>=0)-(n>=4));hn=(4-n).*((n>=0)-(n>=4));subplot(311);stem(n,xn,'.');axis([0 6 0 6]);title('x(n)=()');subplot(312);stem(n,hn,'.');axis([0 6 0 6]);title('h(n)');yn=conv(xn,hn);N2=[0:1:length(yn)-1]subplot(313);stem(N2,yn,'.');axis([0 6 0 30])title('y(n)=x(n)*h(n)');x(n)=(n+1)R4(n)0123456h(n)=(4-n)R4(n)0123456y(n)=x(n)*h(n)0123456(2)循环卷积n=[0:1:3]N1=length(n);xnn=ones(1,N1);xn=(n+1).*xnn;hn=(4-n).*xnn;yln=conv(xn,hn);ycn5=circonv(xn,hn,5); ycn6=circonv(xn,hn,6); ycn7=circonv(xn,hn,7); ycn8=circonv(xn,hn,8);ny1=[0:1:length(yln)-1]; ny5=[0:1:length(ycn5)-1]; ny6=[0:1:length(ycn6)-1]; ny7=[0:1:length(ycn7)-1]; ny8=[0:1:length(ycn8)-1];subplot(321);stem(ny1,yln,'.');title('yln');axis([0 8 0 40]);subplot(322);stem(ny5,ycn5,'.');title('5µãycn');axis([0 8 0 40]);subplot(323);stem(ny6,ycn6,'.');title('6µãycn');axis([0 8 0 40]);subplot(324);stem(ny7,ycn7,'.');title('7µãycn');axis([0 8 0 40]);subplot(325);stem(ny8,ycn8,'.');title('8µãycn');axis([0 8 0 40]);(3)fft 函数实现圆卷积n=[0:1:3] N1=length(n); xnn=ones(1,N1); xn=(n+1).*xnn; hn=(4-n).*xnn; N1=length(xn); N2=length(hn); N=N1+N2-1; NN1=5; NN2=6; NN3=7; NN4=8; XK=fft(xn,N); HK=fft(hn,N); YK=XK.*HK;x=0:N-1; yn=ifft(YK,N); subplot(321);02468yln024685点ycn024686点ycn024687点ycn8点ycnstem(x,yn,'.');axis([0 8 0 40]);title('yln');x=0:NN1-1;yn=ifft(YK,NN1);subplot(322);stem(x,yn,'.');axis([0 8 0 40]);title('5µãycn');x=0:NN2-1;yn=ifft(YK,NN2);subplot(323);stem(x,yn,'.');axis([0 8 0 40]);title('6µãycn');x=0:NN3-1;yn=ifft(YK,NN3);subplot(324);stem(x,yn,'.');axis([0 8 0 40]);title('7µãycn');x=0:NN4-1;yn=ifft(YK,NN4);subplot(325);stem(x,yn,'.');axis([0 8 0 40]);title('8µãycn');附:function yc=circonv(x1,x2,N)if length(x1)>Nerror('N must not be less than length of x1'); endif length(x2)>Nerror('N must not be less than length of x2'); endx1=[x1,zeros(1,N-length(x1))];x2=[x2,zeros(1,N-length(x2))];n=[0:1:N-1];x2=x2(mod(-n,N)+1);H=zeros(N,N); for n=1:1:NH(n,:)=cirshiftd(x2,n-1,N); end yc=x1*H';function y=cirshiftd(x,m,N) if length(x)>Nerror('length of x must be less than N'); endx=[x,zeros(1,N-length(x))]; n=[0:1:N-1]; y=x(mod(n-m,N)+1);02468yln024685点ycn024686点ycn024687点ycn024688点ycn。

北邮《数字信号处理》Matlab实验——实现重叠相加和重叠保留算法完成线性卷积的分段计算

北邮《数字信号处理》Matlab实验——实现重叠相加和重叠保留算法完成线性卷积的分段计算
实验题目 1:线性卷积的分段计算
实验目的:
实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定 x(n)及 h(n)) 。
试验内容:
1、对算法的概括性说明
重叠相加法是将待过滤的信号分割成长为 N 的若干段,每一段都可以和有限时宽单位 取样响应作卷积,再将过滤后的各段重叠相加。建立缓存序列,每次输入 N 点序列,通过 计算 x(n)和 h(n) 的循环卷积实现线性卷积运算,将缓存的 M‐1 点序列和卷积结果相加,并 输出前 N 点作为计算结果,同时缓存后 M‐1 点,如此循环,直至所有分段计算完毕,则输 出序列 y(n)为最终计算结果。
5、总结实验过程中出现的问题以及解决问题的具体措施
1.利用自定义函数解决代码重复使用的问题,避免多次输入同样代码。 2.构造分段补零不会实现,通过上网查资料后获得实现相关功能的代码。
可见, 用重叠相加法和重叠保留发分别计算的卷积结果与直接利用线性卷积计算的结果 一致。算法正确性得以验证。
4、结合教材 3.5.1 节作运算量分析
若有限长因果序列 x(n)和 h(n)的长度分别为 N 和 M,计算其线性卷积 y(n),需 MN 次乘 法运算,(M‐1)(N‐1)次加法运算。如果利用循环卷积方法,按基 2 时域抽选法实现 L 点 FFT 和 IFFT,需
3、实验结果
输入(参考教材例 3.4、3.5) :
n = 0:9; xn = n+1; hn = [1,0,-1]; N = 6;
y1 = conv(hn, xn) y2 = overlap_add(xn, hn, N) y3 = overlap_save(xn, hn, N)
输出:
y1 = 1 y2 = Columns 1 through 10 1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2 2 2 2 2 2 2 2 2 -9 -10

matlab实现线性卷积和循环卷积

matlab实现线性卷积和循环卷积

编号:数字信号处理实训 (论文)说明书题目:用matlab实现两信号的卷积院(系):应用科技学院专业:电子信息工程学生姓名:***学号: ********** 指导教师:严素清童有为纪元法2011 年 6 月29日摘要本文讲述的是运用matlab软件编写线性卷积和循环卷积,运行程序并得到正确结果,附上运行结果图让大家参照对比。

MATLAB是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

而线性卷积和循环卷积在工程上的应用亦非常广泛,在Matlab软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。

利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

本文从线性卷积和循环的定义出发,分析其运算原理以及相关的公式、程序,着重介绍并分析了卷积的运算过程,让大家明白什么是卷积。

程序运行之后得到正确的结果,将运行后正确的波形图图放在本次论文中让大家直观的做比较。

关键词:Matlab;线性卷积;循环卷积;波形图;正确AbstractThis is about using matlab software linear convolution and cyclic convolution, operation procedure and get the right result, enclosed operation result diagram let everybody reference MATLAB is a type of technology in applications of mathematics, especially in numerical calculation of the leading software, which can be matrix calculation, and data mapping function, the realization of algorithms, creation of user interface, connected to other procedures, such as programming languages, the main application in engineering computing, control design, signal processing and communications, image processing, signal detection, financial modeling in areas such as design and analysis. And linear convolution in the application of engineering has a very wide range of software in Matlab, the realization of any two sequences of linear convolution support for projects is very important. Convolution relationship between the most important case, that is linear in the signal and digital signal processing system or the convolution theorem. Use of the theorem can be time-domain or space domain to the convolution operation in frequency domain equivalent of the multiplication operation, thus the use of FFT and other fast algorithms, the calculation of effective, cost-saving operation.From linear convolution and circulation of the definition, analyzes its operation principle and relevant formula, procedures, and emphatically introduces and analyses the convolution operation process, let everyone know what convolution. After the program is running properly after operation, the results will be put on the right of the waveform Desmond tutu paper let everybody intuitive to compare.Key words:Matlab;Linear convolution;Circular convolution;Sequence;Wave;Right目录引言 (1)1 MATLAB软件简介 (1)1.1 MATLAB的优势 (1)1.2 MATLAB的组成 (3)2 卷积分析 (3)2.1 卷积的定义 (3)2.2 线性卷积的运算 (4)2.3 循环卷积的运算 (5)3 MATLAB设计线性卷积 (5)3.1 线性卷积的分析 (5)3.2 线性卷积的设计流程图 (6)3.3 线性卷积的MATLAB设计源程序 (6)4 MATLAB设计循环卷积 (8)4.1 循环卷积的分析 (8)4.2 根据循环卷积分析设计流程图 (8)4.3 根据循环卷积流程图设计matlab源代码 (10)5 总结 (11)谢辞 (12)参考文献 (13)引言在泛函分析中,卷积(卷积)、旋积或摺积(英语:Convolution)是通过两个函数f和g生成第三个函数的一种数学算子,表徵函数f与经过翻转和平移与g 的重叠部分的累积。

conv函数的用法matlab

conv函数的用法matlab

conv函数的用法matlab引言在信号处理和系统分析中,卷积是一种重要的数学操作。

MATLAB中提供了conv函数来进行卷积运算。

本文将详细介绍conv函数的用法,并通过示例演示其功能和应用。

什么是卷积?卷积是一种数学运算,用于描述两个函数之间的关系。

在信号处理中,卷积可以用来计算输入信号和系统的响应之间的关系,以及信号在系统中的传递过程。

conv函数的基本用法conv函数的基本语法如下:y = conv(u, v)其中,u和v是输入向量,y是输出向量。

conv函数将u和v进行卷积运算,并将结果存储在y中。

一维卷积示例下面通过一个简单的示例来演示一维卷积的计算过程。

假设我们有两个输入向量u 和v:u = [1, 2, 3, 4]v = [1, 1, 1]我们可以使用conv函数来计算u和v的卷积:y = conv(u, v)计算结果为:y = [1, 3, 6, 9, 7, 4]可以看到,卷积的结果是一个长度为6的向量,其中的每个元素是输入向量u和v 之间对应位置的乘积的和。

二维卷积示例除了一维卷积,MATLAB的conv函数还可以用于二维卷积。

下面通过一个示例来演示二维卷积的计算过程。

假设我们有两个输入矩阵A和B:A = [1, 2, 3; 4, 5, 6; 7, 8, 9]B = [1, 1; 1, 1]我们可以使用conv函数来计算A和B的卷积:C = conv2(A, B)计算结果为:C = [1, 3, 5, 3; 5, 12, 16, 9; 8, 20, 24, 13; 7, 15, 17, 9]可以看到,卷积的结果是一个与输入矩阵A大小相同的矩阵,其中的每个元素是输入矩阵A和B之间对应位置的乘积的和。

conv函数的其他用法除了基本的卷积运算,MATLAB的conv函数还提供了一些其他的用法,以满足不同的需求。

1. 离散卷积除了默认的线性卷积,conv函数还可以进行离散卷积。

离散卷积是一种在离散时间上进行的卷积运算,常用于数字信号处理中。

用MATLAB实现线性卷积运算

用MATLAB实现线性卷积运算

北京邮电大学实验报告实验名称:用MATLAB实现线性卷积运算学院:信息与通信工程学院班级:姓名:学号:日期:2018年5月一、实验原理1、算法产生背景DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。

在形式上,变换两端<时域和频域上)的序列是有限长的。

DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。

对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即(> (>*(> ynxnhn通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。

因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT 的一个重要应用。

2、算法基本思想1)重叠相加法重叠相加法是将待过滤的信号分割成长为N 的若干段,如图1 所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。

具体算法实现原理如图2 所示,建立缓存序列,每次输入N 点序列,通过计算x(n> 和h(n> 的循环卷积实现线性卷积运算,将缓存的M-1 点序列和卷积结果相加,并输出前N 点作为计算结果,同时缓存后M-1 点,如此循环,直至所有分段计算完毕,则输出序列y(n>为最终计算结果。

2)重叠保留法重叠保留法相当于将x�l(n>和h(�n>作循环卷积,然后找出循环卷积中相当于线性卷积的部分。

在这种情况下,将序列y(n>分为长为N的若干段(如图3所示>,每个输入段和前一段有M-1个重叠点。

此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n>,算法如图4所示。

二、流程图设计1、重叠相加法2、重叠保留法三、MATLAB源代码1、重叠相加源码2.重叠保留源码2、四、实验结果与分析对两种算法采用同一序列进行测试分析。

实验四-使用matlab实现卷积的运算

实验四-使用matlab实现卷积的运算

实验四-使用m a t l a b实现卷积的运算(总5页)-本页仅作为预览文档封面,使用时请删除本页-实验四 使用matlab 实现卷积的运算一 实验目的1、学习MATLAB 语言的编程方法及熟悉MATLAB 指令; 2、深刻理解卷积运算,利用离散卷积实现连续卷积运算; 二 实验内容1、 完成)(1t f 与)(2t f 两函数的卷积运算其中:)4()()(),()(221--==-t u t u t f t u e t f t 在一个图形窗口中,画出)(1t f 、)(2t f 以及卷积结果。

要求每个坐标系有标题、坐标轴名称。

p = ; %定义时间间隔t= 0:p:10;%定义时间向量f1=exp(-2*t).*u(t); %将f (t )表示出来f2=u(t)-u(t-4);f=conv(f1,f2);subplot(1,2,1);plot(t,f1,t,f2); title('f1=e^-2t*u(t)'' / ''f2=u(t)-u(t-4)');xlabel('t(sec)'); % 这行代码是给出x 坐标的标签ylabel('f(t)');grid on ;subplot(1,2,2);plot(f); title('f=f1*f2');xlabel('t(sec)'); % 这行代码是给出x 坐标的标签ylabel('f')grid on2、 若系统模型为:)(3)()(4)(4)(''''t f t f t y t y t y +=++ 其中 )()(t u e t f t -=求零状态响应,画出波形(函数本身画出一幅图,自己再画出一幅输入波形图)。

零状态响应:a= [1 4 4]; %将y (t )各阶导数的系数放在向量a 中b= [1 3]; %将f (t )各阶导数的系数放在向量b 中sys = tf(b, a); %求系统函数systd = ; %定义时间间隔t = 0 : td : 10; %定义时间向量f = exp(-t).*u(t); %将f (t )表示出来y = lsim(sys, f, t); %求系统的零状态响应yplot(t, y); %绘出零状态响应的波形xlabel('t(sec)'); % 这行代码是给出x 坐标的标签ylabel('y(t)'); % 这行代码是给出y 坐标的标签grid on输入波形图:a= [1 4 4]; %将y(t)各阶导数的系数放在向量a中b= [1 3]; %将f(t)各阶导数的系数放在向量b中sys = tf(b, a); %求系统函数systd = ; %定义时间间隔t = 0 : td : 10; %定义时间向量f = exp(-t).*u(t);plot(t,f);xlabel('t(sec)'); % 这行代码是给出x坐标的标签ylabel('f(t)');grid on三 实验原理:1、 离散卷积和:调用函数:conv ()∑∞-∞=-==i i k f i f f f conv S )()(1)2,1(为离散卷积和, 其中,f1(k), f2 (k) 为离散序列,K=…-2, -1, 0 , 1, 2, …。

基于Matlab实现线性卷积等

基于Matlab实现线性卷积等

线性卷积与循环卷积一、作品目的通过matlab的强大功能展示线性卷积和循环卷积过程中方方面面的计算和变化,让大家对这两种卷积有一个更加完美的认识。

二、概念简介卷积是一种典型的乘累加运算。

1.线性卷积线性卷积是对线性移不变(LSI)系统的输入输出关系的描述,体现系统的特性。

线性卷积的表达式为一般情况,现实的系统为因果系统,有k<0时,恒有h(k)=0,则若x(n)是一个N点序列,h(n)是一个m点序列,则卷积的结果y(n)将是L=N+M-1点的序列。

2.循环卷积设x1(n) 和x2(n) 是两个长度为L、M的有限长序列,它们的N 点循环卷积x3(n) 定义为:注意:其中N>=Max{L,M}如果其中一个序列(或者两个序列)的长度没有所求N点循环卷积的长度长,那在该序列后面补零,直到长度达到N。

三、设计思路及程序1. 线性卷积:(1)以输入序列x(n)=[5,4,3,2,1],脉冲响应h(n)=[1,1,1,1]为列进行演示。

(2)计算输入序列和脉冲响应的长度。

(3)画出补零后的输入序列和脉冲响应(4)设计一个循环,在循环中实现反转、位移和计算。

并画出反转后的图像变化和卷积图像,将每一次移位结果保存为fig图。

(5)最后将上一步所生成的所有fig图合起来生成一张gif图程序展示:clear;clc;close all;(1)(2)xn=[5,4,3,2,1];M=length(xn);%输入任意序列并计算长度Mhn=[1,1,1,1];N=length(hn);%输入任意脉冲响应并计算长度Nm=[-(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);endxmfy(n)=0;xmfy;%实现翻转后移位并显示endsubplot(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,c onv(xn,hn)])]);%%控制绘图坐标ylabel('y(n)');grid on;title('(d)卷积输出y(n)');%%加标签网格和标题pause(.5);drawnow,picname=[num2str(n) '.fig'];%保存的文件名:如i=1时,picname=1.fighold on % 写后面的字时,不把前面的字冲掉saveas(gcf,picname)endyn;stepall=M+N-2;(5)for i=1:stepallpicname=[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==1imwrite(I,map,'xianxingjuanji.gif','gif', 'Loopcount',inf,'DelayTime',0.5);elseif i==stepallimwrite(I,map,'xianxingjuanji.gif','gif','WriteMo de','append','DelayTime',0.5);elseimwrite(I,map,'xianxingjuanji.gif','gif','WriteMode','append','DelayTime',0.5); end;close allend实验结果展示:2. 循环卷积(1)以输入序列x(n)=[5,4,3,2,1],脉冲响应h(n)=[1,1,1,1]为列进行演示。

利用MATLAB实现循环卷积.doc

利用MATLAB实现循环卷积.doc

一、实验目的1.利用MATLAB实现循环卷积。

2.比较循环卷积与线性卷积的区别。

二、实验条件PC机,MATLAB7.0三、实验内容1)循环卷积的定义:两个序列的N点循环卷积定义为:利用MATLAB实现两个序列的循环卷积可以分三个步骤完成:(1)初始化:确定循环点数N,测量输入2个序列的长度。

(2)循环右移函数:将序列x(n)循环右移,一共移N次(N为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V。

(3)相乘:将x(n)移位后组成的矩阵V与第二个序列h(n)对应相乘,即得循环卷积结果。

程序如下:程序一:clear;close all;N=10;x1=[6 15 -6 3 5 7 0 1];x2=[7 1 2 9 4 3 20 6];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(3,1,1);stem(xxn1,x1);subplot(3,1,2);stem(xxn2,x2);x11=fft(x1,N);x12=fft(x2,N);y11=x11.*x12;y1=ifft(y11,N);subplot(3,1,3);n=0:length(y1)-1;stem(n,y1,'.');title('循环卷积的结果');xlabel('n');ylabel('y1(n)');运行后所得图形如下:观察所得的循环卷积结果发现并没有呈现周期性的序列,因此将程序做下列改变。

程序二:clear;close all;N=40;x1=[6 15 -6 3 5 7 0 1];x2=[7 1 2 9 4 3 20 6];x2=[x2,x2,x2,x2];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(3,1,1);stem(xxn1,x1);subplot(3,1,2);stem(xxn2,x2);x11=fft(x1,N);x12=fft(x2,N);y11=x11.*x12;y1=ifft(y11,N);subplot(3,1,3);n=0:length(y1)-1;stem(n,y1,'.');title('循环卷积的结果');xlabel('n');ylabel('y1(n)');从图中可以看出循环卷积的结果已经呈循环序列。

实验五 线性卷积与循环卷积的计算

实验五  线性卷积与循环卷积的计算

实验五 线性卷积与循环卷积的计算一、实验目的1、进一步加深对线性卷积的理解和分析能力;2、通过编程,上机调试程序,进一步增强使用计算机解决问题的能力;3、掌握线性卷积与循环卷积软件实现的方法,并验证二者之间的关系。

二、实验原理1、线性卷积线性时不变系统(Linear Time-Invariant System, or L. T. I 系统)输入、输出间的关系为:当系统输入序列为)(n x ,系统的单位脉冲响应为)(n h ,输出序列为)(n y ,则系统输出为:∑∞-∞==-=m n h n x m n h m x n y )(*)()()()(或∑+∞-∞==-=m n x n h m n x m h n y )(*)()()()(上式称为离散卷积或线性卷积。

图6.1示出线性时不变系统的输入、输出关系。

)(n δ→ L. T. I —→)(n h —→ —→图6.1 线性时不变系统的输入、输出关系2、循环卷积设两个有限长序列)(1n x 和)(2n x ,均为N 点长)(1n x )(1k X )(2n x )(2k X 如果)()()(213k X k X k X ⋅=则 )()(~)(~)(10213n R m n x m x n x N N m ⎥⎦⎤⎢⎣⎡-=∑-=[]∑---=1021)()(N m N m n x m x)(1n x =N 10)(2-≤≤N n n x上式称为循环卷积或圆周卷积)(n x L. T. I h(n)∑+∞-∞=-=m m n h m x n y )()()(D F T D F T注:)(~1n x 为)(1n x 序列的周期化序列;)()(~1n R n x N 为)(~1n x 的主值序列。

上机编程计算时,)(3n x 可表示如下:∑∑-+==-++-=11210213)()()()()(N n m nm m n N xm x m n x m x n x3、两个有限长序列的线性卷积序列)(1n x 为L 点长,序列)(2n x 为P 点长,)(3n x 为这两个序列的线性卷积,则)(3n x 为∑+∞-∞=-=m m n xm x n x )()()(213且线性卷积)(3n x 的最大长1-+P L ,也就是说当1-≤n 和1-+≥P L n 时0)(3=n x 。

用MATLAB实现线性卷积运算 北邮

用MATLAB实现线性卷积运算 北邮
对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即
通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。
2
重叠相加法是将待过滤的信号分割成长为N的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。
0.396206
0.246052
0.33387
10000000
59.93776
25.10466
3.897444
2.328122
3.231499
由上表和图1可以看出,随着数据规模增大,运算耗时呈线性增长,因而算法的时间复杂度为O(n),其中n为数据规模。因而重叠相加算法具有可行性和实用性。再从算法的空间复杂度来看,由于分配的缓存空间只由分段长度确定,不随数据规模的变化而变化,因而空间复杂度为O(1)。综合考察,重叠相加法具有较好的时间和空间复杂度。当数据量达到千万量级时,运算延时最少大约为2.328s,可运用于对信号的实时处理。
2
①分段问题
初始时没有考虑到分段长度的限制,导致用户输入分段小于系统冲击响应h(n)的长度时运算出错。后增加一个判断语句,当出现前述情况时,自动提升分段点数,问题解决。
②运算完整性问题
在写好代码之后的测试中,出现了一个十分奇怪的现象,即:当输入点数为1000、10000或者更大时卷积运算最后M-1个结果为0。反复测试发现,不仅1000和10000,只要是分段数N的倍数的输入点数都存在同样问题,而其他非倍数的输入,运算与conv()函数运算结果完全一致。通过设置断点,逐句调试,最终发现问题的症结,当输入序列为N的倍数时,最后的一段卷积实际上没有做。因而将循环次数增加1,将最后一次保留的M-1个点补全N个0,做最后一次分段卷积。修改后,测试结果正确。

用Matlab验证循环卷积和线性卷积关系的软件设计与仿真

用Matlab验证循环卷积和线性卷积关系的软件设计与仿真

n
八点循环卷积
10000432 1 1 21000043 2 4 3 2 1 0 0 0 0 4 3 10 4 3 2 1 0 0 0 0 4 20 0 4 3 2 1 0 0 0 0 25 0 0 4 3 2 1 0 0 0 24 0 0 0 4 3 2 1 0 0 16 00004321 0 0
题目:用Matlab验证循环卷积和线性卷积
关系的软件设计与仿真
生物科学与技术学院2013年级 专业:生物医学工程 答辩人:蔡贝贝 导师:王小东
目录
研究背景
1
理论知识
2
实验数据与结论
3
第一部分
课题背景
主要应用 研究意义 研究方法
主要应用
系统 输出
线性时不变系统中,已知输入 和系统的单位脉冲响应,可以 通过线性卷积求解系统输出。
c(n)
30
25
20
15
10
5
0
0
1
2
3
4
5
6
7
8
9 10
n
四点循环卷积
矩阵相乘法
1 4 3 2 1 26 2 1 4 3 2 28 3 2 1 4 3 26 4 3 2 1 4 20
w(n)
Matlab法
30 25 20 15 10 5 0
0 1 2 3 4 5 6 7 8 9 10 n
五点循环卷积
1 0 4 3 2 1 25 2 1 0 4 3 2 20 3 2 1 0 4 3 10 4 3 2 1 0 4 20 0 4 3 2 1 0 25
w(n)
30 25 20 15 10 5 0
0 1 2 3 4 5 6 7 8 9 10 n

MATLAB求卷积的原理及应用

MATLAB求卷积的原理及应用

MATLAB求卷积的原理及应用1. 卷积的基本概念卷积是信号处理中常用的一种数学运算,它用于描述两个信号之间的相互影响关系。

在MATLAB中,可以使用内置函数conv来进行卷积运算。

卷积的原理是通过将两个信号进行乘积运算,并将乘积结果按时间偏移进行累加,得到在不同时间点上的输出信号。

数学上,卷积可以表示为以下公式:y(n) = ∑(x(k)*h(n-k))其中,x和h是两个输入信号,k是一个累加变量,n是输出信号的时间变量。

2. MATLAB中的卷积函数MATLAB提供了conv函数来进行卷积运算。

该函数的语法如下:y = conv(x, h)其中,x和h分别表示要进行卷积运算的两个信号,y表示卷积的结果。

x与h 可以是向量、矩阵或多维数组。

3. 卷积的应用场景卷积在信号处理中有广泛的应用,下面列举了一些常见的应用场景。

3.1 信号滤波卷积可以用于信号滤波,通过将信号与一个滤波器的冲激响应进行卷积运算,可以实现对信号的滤波操作。

滤波器可以用于去除噪声、平滑信号等。

3.2 时域信号处理卷积可以用于时域信号处理,如信号的平移、放大缩小等操作。

通过将信号与一个单位脉冲序列进行卷积运算,可以实现对信号的平移操作。

3.3 系统响应分析卷积可以用于分析线性时不变系统的响应。

通过将输入信号与系统的冲激响应进行卷积运算,可以得到系统的输出响应。

3.4 图像处理卷积在图像处理中也有广泛的应用。

例如,可以使用卷积运算实现图像的边缘检测、模糊处理等操作。

在MATLAB中,可以使用conv2函数进行二维卷积运算。

4. 示例代码下面是一个使用MATLAB进行卷积运算的示例代码:x = [1, 2, 3, 2, 1]; % 定义输入信号xh = [1, -1, 1]; % 定义滤波器冲激响应hy = conv(x, h); % 进行卷积运算disp(y); % 输出卷积结果运行以上代码,可以得到卷积的结果。

5. 总结本文介绍了MATLAB中求卷积的原理和应用。

基于Matlab的循环卷积计算

基于Matlab的循环卷积计算

题目:x(n) = {x(O), x(1), x(2)} = {1,3,2}, h(n) = {h(O), h(1), h(2), h(3)}={4,3,2,1}(1)计算 y(n) = x(n) * h(n);(2)分别计算出x(n)与h(n)4点、5点和6点的循环卷积。

解:(1) matlab 代码:X = [1 3 2]; H = [4 3 2 1]; Y = con v(H,X);figure(1); nX = 0:le ngth(X)-1; nH = 0:le ngth(H)-1; nY = 0:le ngth(Y)-1;subplot(3,1,1);stem( nX,X);xlabel('Time in dex n'); ylabel('Amplitude'); title('x (n)'); grid on;subplot(3,1,2);stem( nH,H);xlabel('Time in dex n'); ylabel('Amplitude'); title('h( n)'); grid on;subplot(3,1,3);stem( nY,Y);xlabel('Time in dex n'); ylabel('Amplitude'); title('y( n)= x(n 广h( n)'); grid on;结果如下:H = 4 3 2 115 19 13T ------------------------- 1------u _ - _■£4咅T EI ir ■■伽仃jrt^iF XnJffiCfl]l.i IB r r 于i riJnpn(2) matlab 代码:X = [1 3 2]; H = [4 3 2 1];N4 = 4; N5 = 5; N6 = 6;figure(2);% ---------------- 4 点循环卷积--------------------------------------X4 = fft(X,N4); H4 = fft(H,N4); yy = X4.* H4;Y4 = ifft(yy,N4);nY4 = 0:le ngth(Y4)-1;subplot(3,1,1); stem( nY4,丫4);grid on; xlabel('Time index n'); ylabel('Amplitude'); title('y(n)-4 点循环卷积'); % ---------------- 5 点循环卷积--------------------------------------X5 = fft(X,N5); H5 = fft(H,N5); yy = X5.* H5;Y5 = ifft(yy,N5);nY5 = 0:le ngth(Y5)-1;subplot(3,1,2); stem( nY 5,Y5);grid on; xlabel('Time index n'); ylabel('Amplitude'); title('y(n)-5 点循环卷积');% ---------------- 6 点循环卷积--------------------------------------X6 = fft(X,N6); H6 = fft(H,N6); yy = X6.* H6;Y6 = ifft(yy,N6);nY6 = 0:le ngth(Y6)-1;subplot(3,1,3); stem( nY 6,Y6);grid on; xlabel('Time index n'); ylabel('Amplitude'); title('y(n)-6 点循环卷积');结果如下:X = 1 3 2H = 4 3 2 1Y4 = 11 17 19 13Y5 = 6.0000 15.0000 19.0000 13.0000 7.0000Y6 = 4.0000 15.0000 19.0000 13.0000 7.0000 2.0000结果如下图:怖点約申程严i3T«w *■ n~ r i1*T ran ndoji n。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编号:数字信号处理实训 (论文)说明书题目:用matlab实现两信号的卷积院(系):应用科技学院专业:电子信息工程学生姓名:***学号: ********** 指导教师:严素清童有为纪元法2011 年 6 月29日摘要本文讲述的是运用matlab软件编写线性卷积和循环卷积,运行程序并得到正确结果,附上运行结果图让大家参照对比。

MATLAB是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

而线性卷积和循环卷积在工程上的应用亦非常广泛,在Matlab软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。

利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

本文从线性卷积和循环的定义出发,分析其运算原理以及相关的公式、程序,着重介绍并分析了卷积的运算过程,让大家明白什么是卷积。

程序运行之后得到正确的结果,将运行后正确的波形图图放在本次论文中让大家直观的做比较。

关键词:Matlab;线性卷积;循环卷积;波形图;正确AbstractThis is about using matlab software linear convolution and cyclic convolution, operation procedure and get the right result, enclosed operation result diagram let everybody reference MATLAB is a type of technology in applications of mathematics, especially in numerical calculation of the leading software, which can be matrix calculation, and data mapping function, the realization of algorithms, creation of user interface, connected to other procedures, such as programming languages, the main application in engineering computing, control design, signal processing and communications, image processing, signal detection, financial modeling in areas such as design and analysis. And linear convolution in the application of engineering has a very wide range of software in Matlab, the realization of any two sequences of linear convolution support for projects is very important. Convolution relationship between the most important case, that is linear in the signal and digital signal processing system or the convolution theorem. Use of the theorem can be time-domain or space domain to the convolution operation in frequency domain equivalent of the multiplication operation, thus the use of FFT and other fast algorithms, the calculation of effective, cost-saving operation.From linear convolution and circulation of the definition, analyzes its operation principle and relevant formula, procedures, and emphatically introduces and analyses the convolution operation process, let everyone know what convolution. After the program is running properly after operation, the results will be put on the right of the waveform Desmond tutu paper let everybody intuitive to compare.Key words:Matlab;Linear convolution;Circular convolution;Sequence;Wave;Right目录引言 (1)1 MATLAB软件简介 (1)1.1 MATLAB的优势 (1)1.2 MATLAB的组成 (3)2 卷积分析 (3)2.1 卷积的定义 (3)2.2 线性卷积的运算 (4)2.3 循环卷积的运算 (5)3 MATLAB设计线性卷积 (5)3.1 线性卷积的分析 (5)3.2 线性卷积的设计流程图 (6)3.3 线性卷积的MATLAB设计源程序 (6)4 MATLAB设计循环卷积 (8)4.1 循环卷积的分析 (8)4.2 根据循环卷积分析设计流程图 (8)4.3 根据循环卷积流程图设计matlab源代码 (10)5 总结 (11)谢辞 (12)参考文献 (13)引言在泛函分析中,卷积(卷积)、旋积或摺积(英语:Convolution)是通过两个函数f和g生成第三个函数的一种数学算子,表徵函数f与经过翻转和平移与g 的重叠部分的累积。

如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广。

卷积是分析数学中一种重要的运算,数学上的卷积在信号处理中有着非常广泛的应用。

只要这个系统是线性的,对于一维空间是这样,二维、三维都是这样,空间域信号是这样,时间域信号也是这样。

一切信号传递处理系统都是卷积系统,但是信号发生系统不像卷积这样,因为信号发生系统不是一个无中生有的系统,它需要消耗能量,而且是一个非线性系统。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。

利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

明确了这些含义以后,我们认为信号放大系统是卷积,信号测量和计数系统也是积。

进一步推广照相系统是卷积,视觉系统也是卷积。

世界上所有的系统都是卷积,例如脉搏是心跳的卷积,水压的波动是泵水电动机转动力的卷积,只要系统是线性的或近似线性的。

卷积的概念还可以推广到数列、测度以及广义函数上去。

因此,我们得到这样一个一般性的结论——卷积在我们的生活中无处不在,它的应用非常广泛。

1 MATLAB软件简介MATLAB名字由MATRIX和 LABORATORY 两词的前三个字母组合而成。

顾名思义,就是矩阵实验室( matrix laboratory )。

MATLAB是一种高性能的科学计算软件,并且广泛应用于数学计算、算法开发、数学建模、系统仿真、数据分析可视化和程序设计集成化等,其具有强大的矩阵运算能力和极高的编程效率,而且使用我们熟悉的数字符号表示问题与答案,这对于初学者来说很容易上手,同时也方便了用户对自己需要的应用程序的开发,运行相应的程序还可以在图形用户界面的建立各种波形仿真图。

MATLAB是一个交互系统,它的基本数据元素是数组,尤其适合解决用矩阵和向量组织数据的科学技术计算问题,对于各种信号的处理可以用不同的库函数或者用户自己编辑的程序来处理,由此可以得到不同的结果,并且还可以经过图形显示来验证。

1.1 MATLAB的优势MATLAB编程语言又称为M语言,是一种交互式的高级编程语言,一种高阶的矩阵/数组语言。

它具有以下的特点和优势:第1页(1)语法简单和编程效率高(2)便于用户使用和扩充(3)方便高校的矩阵和数组运算(4)方便的图形和图像操作功能(5)功能强大的工具箱1.1.1 语法简单编程效率高MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。

新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。

使之更利于非计算机专业的科技人员使用。

1.1.2 便于用户使用和补充新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB 程序自动转换为独立于MATLAB运行的C和C++代码。

允许用户编写可以和MATLAB进行交互的C或C++语言程序作为强大的科学计算软件,MATLAB提供了图形界面的设计与开发功能,MATLAB中的基本图形用户界面对象分为三类:用户界面控制对象、下拉式菜单对象和内容式菜单对象。

1.1.3 方便高校的矩阵和数组运算MATLAB是一个包含大量计算算法的集合。

其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。

函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

在高校中,MATLAB以成为数学,信息,控制等诸多学科有关课程的有效教学工具1.1.4 方便图形和图像操作功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。

它对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。

相关文档
最新文档