当前位置:文档之家› 线性卷积与循环卷积MATLAB仿真程序代码

线性卷积与循环卷积MATLAB仿真程序代码

线性卷积与循环卷积MATLAB仿真程序代码

k1=0:10;%x1变量取值范围

x1=(0.9).^k1;%构成x1

k2=0:4;

% x2=[(k2>=0)&(k2-9<=0)];

x2=[1 1 1 1 1]

y=conv(x1,x2,'full');

figure;

subplot(231);stem(k1,x1);title('x_1(k)');

subplot(232);stem(k2,x2);title('x_2(k)');

k=0:length(y)-1;

subplot(233);stem(k,y);title('x_1(k)与x_2(k)线性卷积y(k)');

n1=0:15;

x1=2*exp(n1/5);

n2=0:18;

x2=5*(0.3).^(n2/3);

N=20;

% fn=(x1,x2,N)

fn=circonvt(x1,x2,N);

%Fk=DFT(fn);

%figure;

subplot(234),stem(n1,x1),title('x1');

subplot(235),stem(n2,x2),title('x2');

subplot(236),stem(0:N-1,fn),title('x1和x2循环卷积结果'); %subplot(2,2,4),stem(0:N-1,Fk),title('fn??DFT?á??');

离散序列卷积(matlab实现)

数字信号处理实验报告 实验一 离散时间序列卷积和MATLAB 实现 (一)实验目的:学会用MATLAB 对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。 (二)实验原理: 1、离散时间序列f1(k)和f2(k)的卷积和定义: f(k)=f1(k)*f2(k)= ∑∞ -∞ =-? i i k f i f )(2)(1 2、在离散信号与系统分析中有两个与卷积和相关的重要结论: a 、f(k)= ∑∞ -∞ =-?i i k i f )()(δ=f(k)* δ(k)即离散序列可分解为一系列 幅度由f(k)决定的单位序列δ(k)及其平移序列之积。 b 、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状 态响应为y(k),则有:y(k)= ∑ ∞ -∞ =-?i i k h i f )()( 3、上机:conv.m 用来实现两个离散序列的线性卷积。 其调用格式是:y=conv(x,h) 若x 的长度为N ,h 的长度为M ,则y 的长度L=N+M-1。 (三)实验内容 1、题一:令x(n)= { }5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。 要求用subplot 和stem 画出x(n),h(n),y(n)与n 的离散序列图形。 源程序: N=5; M=6; L=N+M-1; x=[1,2,3,4,5]; h=[6,2,3,6,4,2]; y=conv(x,h); nx=0:N-1; nh=0:M-1; ny=0:L-1; subplot(131); stem(nx,x,'*k'); xlabel('n'); ylabel('x(n)'); grid on ; subplot(132); stem(nh,h,'*k'); xlabel('n'); ylabel('h(n)'); grid on ; subplot(133); stem(ny,y,'*k'); xlabel('n'); ylabel('y(n)'); grid on ;

循环卷积与线性卷积的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和x2 L1=length(x1)-1;L2=length(x2)-1; %取函数的长度

实验四 线性卷积与圆周卷积的计算

实验三 线性卷积与圆周卷积的计算 一、 实验目的 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 ) (*)()()()( 上式称为离散卷积或线性卷积。 图1.1示出线性时不变系统的输入、输出关系。 )(n δ→ L. T. I —→)(n h —→ —→ 图1.1 线性时不变系统的输入、输出关系 2、圆周卷积 设两个有限长序列)(1n x 和)(2n x ,均为N 点长 )(1n x )(1k X )(2n x )(2k X 如果)()()(213k X k X k X ?= )(n x 0 L. T. I ∑+∞ -∞ =-= m m n h m x n y ) ()()( D F T D F T

则) ()(~)(~)(10213n R m n x m x n x N N m ??? ???-=∑-= [] ∑---=1 021)()(N m N m n x m x )(1n x =N 10)(2-≤≤N n n x 上式称为圆周卷积。 注:)(~1n x 为)(1n x 序列的周期化序列;)()(~1n R n x N 为)(~1n x 的主值序列。 上机编程计算时,)(3n x 可表示如下: ∑∑-+==-++ -=1 1 2 1 0213) ()()()()(N n m n m m n N x m x m n x m x n x 3、两个有限长序列的线性卷积 序列)(1n x 为L 点长,序列)(2n x 为P 点长,)(3n x 为这两个序列的线性卷积,则)(3n x 为 ∑+∞ -∞ =-= m m n x m x n x ) ()()(2 1 3 且线性卷积)(3n x 的最大长1-+P L ,也就是说当1-≤n 和1-+≥P L n 时 0)(3=n x 。 4、圆周卷积与线性卷积的关系 序列)(1n x 为L 点长,序列)(2n x 为P 点长,若序列)(1n x 和)(2n x 进行N 点的圆周卷积,其结果是否等于该两序列的线性卷积,完全取决于圆周卷积的长度: 当1-+≥P L N 时圆周卷积等于线性卷积,即 )(1n x N )(*)()(212n x n x n x = 当1-+

实验四-使用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 on

2、 若系统模型为: )(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); %求系统函数sys td = ; %定义时间间隔 t = 0 : td : 10; %定义时间向量 f = exp(-t).*u(t); %将f (t )表示出来 y = lsim(sys, f, t); %求系统的零状态响应y plot(t, y); %绘出零状态响应的波形 xlabel('t(sec)'); % 这行代码是给出x 坐标的标签 ylabel('y(t)'); % 这行代码是给出y 坐标的标签 grid on

matlab实现卷积运算

2、试求下列图片的卷积波形12()()f t f t * 2() f t t 1 -1 1() f t t 1 -1 列出编程步骤: p=0.01; k1=0:p:1; f1=ones(1,length(k1)); k2=-1:p:1; f2= (k2+1).*(k2<0)+(-k2+1).*(k2>=0); [f,k]=sconv(f1,f2,k1,k2,p) function [f,k]=sconv(f1,f2,k1,k2,p) 3、试求下列图片的卷积波形12()()f t f t *

1() f t t 1 0.5- 2() f t t 12 1 p=0.01; k1=-0.5:p:1; f1=ones(1,length(k1)); k2=0:p:2; f2= 0.5*k2; [f,k]=sconv(f1,f2,k1,k2,p) 4、试求下列图片的卷积波形12()()f t f t *

1() f t t 2 2 - 2() f t t 3-2 -3 21 p=0.01; k1=-2:p:2; f1= (k1==-2)+(k1==2); k2=-3:p:3; f2=(k2+3).*(k2<-2)+(-k2-1).*(k2>=-2).*(k2<=-1)+(k2-1).*(k2>=1).*(k2<=2)+(-k2+3).*(k2>2); [f,k]=sconv(f1,f2,k1,k2,p); 5、试求下列图片的卷积波形12()()f t f t *

1() f t t 5 -5 33 -2() f t t 3 -2 -3 21 p=0.01; k1=-10:p:10; f1=(k1>=-5).*(k1<=-3)+(k1>=3).*(k1<=5); k2=-3:p:3; f2=(k2+3).*(k2<-2)+(-k2-1).*(k2>=-2).*(k2<=-1)+(k2-1).*(k2>=1).*(k2<=2)+(-k2+3).*(k2>2); [f,k]=sconv(f1,f2,k1,k2,p);

利用MATLAB实现循环卷积.doc

一、实验目的 1.利用MATLAB 实现循环卷积。 2.比较循环卷积与线性卷积的区别。 二、实验条件 PC 机,MATLAB7.0 三、实验内容 1)循环卷积的定义:两个序列的N 点循环卷积定义为: )0()()()]()([1 0N n m n x m h n x n h N k N 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);

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

数字信号处理实验报告 黎美琪 201300800610 13通信2 实验一名称:周期卷积、循环卷积和线性卷积比较 一、实验目的 1.理解周期卷积、循环卷积、线性卷积的定义 2.用图像显示上述几种卷积并对其进行直观的比较 二、实验步骤 自行设定: )它们的线性卷积()求它们的循环卷积(求它们的周期卷积(两个有限长序列 3)8(2)8)1(20 12,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)%长度M y1=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

5 求解线性卷积、循环卷积的课上例题

求解线性卷积、循环卷积的课上例题 例:}1,1,1{)()(3==n R n x ,20≤≤n ;}1,2,3,4{)()4()(4=-=n R n n h ,3 0≤≤ n , 求线性卷积)(*)()(n h n x n y =和L 点循环卷积。 线性卷积: )(*)()(n h n x n y =∑ ∞ -∞ =-= m m n h m x )()(∑∞ -∞ =-= m m n x m h )()( 1 y (n )={4, 7, 9, 6, 3, 1},50≤≤n ,非零数据长度6=4+3-1 ()(n h 长度为N ,)(n x 长度为M ,y (n )长度为1-+M N ) 2)移位加权和法(以n 为变量) ∑=-= 2 1 ) ()()(m m m m n h m x n y ) 2()2()1()1()()0(-+-+=n h x n h x n h x ,其中}1 1, ,1{)(=m x ,20≤≤ m y (n )={4, 7, 9, 6, 3, 1}5 0≤≤n L 点循环卷积:)())(()()(1 n R m n h m x n y L L m L c ∑ -=-=)())(()(1 n R m n x m h L L m L ∑-=-= 1)矩阵方程法(以m 为变量) 先将x (n )、h (n )补零到L 点长;再将其中一个序列周期延拓、翻褶、取主值区间的值、循环右移构成方阵,将另一个序列写成列矩阵,二者做矩阵乘法运算。 以用x (n )构成方阵为例。方阵第一行的构成:x (0)不动,将其它值从后往前倒过来写。下面各行依次对上一行循环右移一位,共L 行。 例:求)()(3n R n x = ,)()4()(4n R n n h -=的 4点循环卷积)()()(1n h n x n y c ④= 。 ??? ? ? ?????= ????????????????????= ????????????????????= 6987011143 2 114322143 3214123411 10 01111011 110 1)(1n y c y c 1(n )={7, 8, 9, 6},3 0≤≤ n

基于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);%输入任意序列并计算长度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;

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

实验五 循环卷积与线性卷积的实现 一、实验目的 (1) 进一步理解并掌握循环卷积与线性卷积的概念; (2) 理解掌握二者的关系。 二、实验原理 两个序列的N 点的循环卷积定义为 1 0[()()]()(())N N N k h n x n h m x n m -=?=-∑ (0) n N ≤< 从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N 点序列的N 点循环 卷积结果仍为N 点序列,而它们的线性卷积的结果长度则为2N -1;循环卷积对序列的移位采取循环移位,而线性卷积对序列采取线性移位。正是这些不同,导致了线性卷积和循环卷积有不同的结果和性质。 两个序列的N 点循环卷积是它们的线性卷积以N 为周期的周期延拓。设序列()h n 的长度为1N ,序列()x n 的长度为2N ,此时线性卷积结果的序列点数为'121N N N =+-;因此如果循环卷积的点数N 小于121N N +-,那么上述周期性延拓的结果就会产生混叠,从而两种卷积会有不同的结果。而如果满足'N N =的条件,就有循环卷积与线性卷积的结果在0n N ≤<范围内相同。 根据DFT 循环卷积性质中的卷积定理 {[()()]}[()][()]N DFT h n x n DFT x n DFT h n ?=? 因此可以根据性质先分别求两个序列的N 点DFT ,并相乘,然后取IDFT 以得到循环卷积。 三、实验分析 例题:已知有限长序列()x n 与()h n 如下图所示, (1) 画出两者之间的线性卷积 (2) 8点圆卷积。 (3) 5点圆卷积。

解析如下: (1)()x n 与()h n 的线性卷积,由公式可知: ()*()()()m h n x n x m h n m ∞ =-∞ = -∑ ()x m 与()h m -的图形如下: 利用方格平移法: 由方格平移法可知: 当0n =时,()*()0h n x n = 当1n =时,()*()0h n x n = 当2n =时,()*()0*11*11h n x n =+= 当3n =时,()*()2*11*10*13h n x n =++= 当4n =时,()*()3*12*11*10*16h n x n =+++= 当5n =时,()*()3*12*11*10*16h n x n =+++= 当6n =时,()*()3*12*11*16h n x n =++= 当7n =时,()*()3*12*15h n x n =+= 当8n =时,()*()3*13h n x n ==

用matlab实现两个离散序列的卷积(不使用conv函数)

作业2.用matlab实现离散序列的卷积. N=14; n=[1:N-1]; f=1/16; signal1=5*sin(2*pi*n/8); figure(1); subplot(3,1,1) stem(n,signal1);title( ' 信号1' );xlabel( 'n' );ylabel( axis([0 15 -6 6]) long_M=5; signal2=ones(1,long_M); subplot(3,1,2) stem(signal2);title( ' 信号2' );xlabel( 'n' );ylabel( axis([0 6 -2 2]); grid on; long_N=length(signal1); fk=zeros(0,long_N+long_M+10); if (long_N>long_M) for k=1:1:long_N+long_M-1 a=0; if (k<=long_N) for i=1:1:k if (i>long_M) fk(k)=a; else fk(k)=a+signal2(i)*signal1(k-i+1); a=fk(k); end end else for i=1:1:k if (k-long_N+i>long_M) fk(k)=a; else fk(k)=a+signal2(k-long_N+i)*signal1(long_N-i+1); a=fk(k); end end end end end subplot(3,1,3) stem(fk);title( ' 卷积函数的实现' );xlabel( 'n' );ylabel( 'y(n)' ); 'y(n)' ); 幅度' );

求解线性卷积、循环卷积的课上例题

求解线性卷积、循环卷积地课上例题 例:x(n)=2(n) ={1,1,1} , 0_n_2 ; h(n) =(4 — n)R4(n)二{4,3,2,1} , 0_n_3 , 求线性卷积y(n) x(n)*h(n)和L点循环卷积. 八、t t ,卄,oo oO 线性卷积:y(n) =x(n)* h(n) -、、' x(m)h(n -m) - h(m)x(n - m) m = m _:■■; 1)列表法(以m为变量,翻褶、移位、相乘、相加) m -2 -1 O 1 2 3 h(m)43 2 1 x(m) 1 1 1 y(n) n=O x(-m) 1 1 1 4 n=1 x(1 -m) 1 117 n=2 x(2-m) 1 1 1 9 n=3 x(3-m) 1 1 1 6 n=4 x(4-m) 1 1 3 n=5 x(5-m) 1 1 y(n)={4, 7, 9, 6, 3, 1},O En 乞5,非零数据长度6虫3-1 h(n)长度为N,x(n)长度为M,y(n)长度为N M _1) 2)移位加权和法(以n为变量) m2 y(n) = .:x(m)h(n — m) =x(O)h(n) x(1)h(n —1) x(2)h(n —2),其中x(m)珂1,1,1},O Em 乞2 m田 n O 1 2 3 4 5 x(0)h(n) 4 3 2 1 x(1)h(n—1) 4 3 2 1 x(2)h(n-2) 4 3 2 1 y(n) 4 7 9 6 3 1 y(n)={4 7, 9, 6, 3, 1},O 如冬5 L点循环卷积: LA L A y c(n) x(m)h((n — m))L R L(n)=无h(m)x((n — m))L R_(n) mzS 1)矩阵方程法(以m为变量) 先将x(n)、h(n)补零到L点长;再将其中一个序列周期延拓、翻褶、取主值区间地值、 循环右移构成方阵,将另一个序列写成列矩阵,二者做矩阵乘法运算.文档来源网络及个人整理,勿用作商业用途文档来源网络及个人整理,勿用作商业用途 以用x(n)构成方阵为例方阵第一行地构成:x(O)不动,将其它值从后往前倒过来写.下面各行依次对上一行循环右移一位,共L行.文档来源网络及个人整理,勿用作商业用途文档来源网络及个人整 理,勿用作商业用途 例:求x(n) = R3(n),h(n) =(4 -n)R(n)地4点循环卷积 _1 y c1( n)二1 1 yd(n) =x(n)④h(n).

MATLAB实现卷积码编译码-

本科生毕业论文(设计) 题目:MATLAB实现卷积码编译码 专业代码: 作者姓名: 学号: 单位: 指导教师: 年月日

目录 前言----------------------------------------------------- 1 1. 纠错码基本理论---------------------------------------- 2 1.1纠错码基本理论 ----------------------------------------------- 2 1.1.1纠错码概念 ------------------------------------------------- 2 1.1.2基本原理和性能参数 ----------------------------------------- 2 1.2几种常用的纠错码 --------------------------------------------- 6 2. 卷积码的基本理论-------------------------------------- 8 2.1卷积码介绍 --------------------------------------------------- 8 2.1.1卷积码的差错控制原理----------------------------------- 8 2.2卷积码编码原理 ---------------------------------------------- 10 2.2.1卷积码解析表示法-------------------------------------- 10 2.2.2卷积码图形表示法-------------------------------------- 11 2.3卷积码译码原理---------------------------------------------- 15 2.3.1卷积码三种译码方式------------------------------------ 15 2.3.2V ITERBI译码原理---------------------------------------- 16 3. 卷积码编译码及MATLAB仿真---------------------------- 18 3.1M ATLAB概述-------------------------------------------------- 18 3.1.1M ATLAB的特点------------------------------------------ 19 3.1.2M ATLAB工具箱和内容------------------------------------ 19 3.2卷积码编码及仿真 -------------------------------------------- 20 3.2.1编码程序 ---------------------------------------------- 20 3.3信道传输过程仿真-------------------------------------------- 21 3.4维特比译码程序及仿真 ---------------------------------------- 22 3.4.1维特比译码算法解析------------------------------------ 23 3.4.2V ITERBI译码程序--------------------------------------- 25 3.4.3 VITERBI译码MATLAB仿真----------------------------------- 28 3.4.4信噪比对卷积码译码性能的影响 -------------------------- 28

用MATLAB实现序列圆周卷积

数字信号处理实验报告 实验项目名称:用MATLAB实现序列的圆周卷积 实验日期: 2012-11-28 实验成绩: 实验评定标准: 一、实验目的 通过本实验,掌握一些基本而且重要的离散时间信号,熟悉基本离散时间信号的MATLAB实现方法。 二、实验器材 PC机,MATLAB软件。 三、实验内容 计算两序列x1(n)={1,2,3,4,5},x2(n)={1,2,3,4,5,4,3,2,1}的圆周卷积。 四、实验结果 实验代码: clear all close all clc x1=[1,2,3,4,5,6,7,8]; x2=[1,2,3,4,5,6,7,8,7,6,5,4,3,2, 1]; N=length(x1)+length(x2); n=0:N-1 n1=0:N-2; n2=0:N-3; y1=circonvt(x1,x2,N); y2=circonvt(x1,x2,N-1);

y3=circonvt(x1,x2,N-2); x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; Xf1=dft(x1,N); Xf2=dft(x2,N); Xf=Xf1.*Xf2; x=idft(Xf,N); x=real(x); subplot(2,3,1) stem(n,x1); title('x1(n)'); subplot(2,3,2) stem(n,x2); title('x2(n)') subplot(2,3,3); stem(n,x); title('x(n)=IDFT(X(k))'); subplot(2,3,4); stem(n,y1); title('N点圆周卷积'); subplot(2,3,5); stem(n1,y2); title('N-1点圆周卷积'); subplot(2,3,6); stem(n2,y3); title('N-2点圆周卷积'); function y=circonvt(x1,x2,N) if length(x1)>N error('N 必须 >= x1的长度') end if length(x2)>N error('N 必须 >= x2的长度') end x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1]; x2=x2(mod(-m,N)+1); H=zeros(N,N); for n=1:1:N H(n,:)=cirshift(x2,n-1,N); end y=x1*H; function y=cirshift(x,m,N) if length(x)>N error('N 必须 >= x的长度') end x=[x zeros(1,N-length(x))]; n=[0:1:N-1]; n=mod(n-m,N); y=x(n+1); function [Xk]=dft(xn,N) n=[0:1:N-1];k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk; Xk= xn * WNnk; function [xn]=idft(Xk,N) %计算逆离散傅里叶变换 %[xn]=idft(Xk,N) n=[0:1:N-1];

用MATLAB实现线性卷积运算

北京邮电大学 实验报告 实验名称:用MATLAB实现线性卷积运算学院:信息与通信工程学院 班级: 姓名: 学号: 日期:2012年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所示。

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

上海电力学院 信号与系统实验报告 题目:循环卷积与线性卷积的实现 班级:2011023 专业:电气工程及其自动化 学号:20111257 2013年12月17日

循环卷积与线性卷积的实现 一、实验目的 1、进一步理解并掌握循环卷积与线性卷积的概念; 2、理解掌握二者的关系; 二、实验原理 两个序列的N 点循环卷积的定义为: ()()[]()()()N N k N m n x m h n x n h -=?∑-=10() N N <≤0从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N 点序列的N 点循环卷积的结果仍为N 点序列,而它们的线性卷积的结果的长度则为2N-1;循环卷积对序列的位移采取循环位移,而线性卷积对序列采取线性位移。正是这些不同,导致了线性卷积和循环卷积有不同的结果和性质。 循环卷积和线性卷积虽然是不同的概念,但它们之间由一个有意义的公式联系在一起:()()()[]()()n G rN n y n x n h n y N r N ??? ??-'=?=∑∞-∞=其中()()()n x n h n y *='。 也就是说,两个序列的N 点循环卷积是他们的线性卷积以N 为周期延拓。设序列()n h 的长度为N1,序列()n x 的长度为N2,此时,线性卷积结果的序列的点数为121-+='N N N ;因此如果循环卷积的点数N 小于121-+N N ,那么上述周期性延拓的结果就会产生混叠,从而两种卷积会有不同的结果。而如果N 满足N N '=的条件,就会有()()n y n y '=() N n <≤0这就意味着在时域不会产生混叠。因此,我们得出结论:若通过在序列的末尾填充适当的零值,使得()n x 和()n h 成为121-+N N 点序列,并作出这两个序列的121-+N N 循环卷积,那么循环卷积与线性卷积的结果在N n <≤0范围内相同。 根据DFT 循环卷积性质中的卷积定理

matlab旋转实现(最近邻值-双线性-三次卷积插值实现插值)

对图像进行旋转,使用最近邻插值法,双线性插值,三次卷积插值三种方法进行插值。 源码: clc;clear all;close all; Img=imread('test1.bmp'); Img=double(Img); [h w]=size(Img); alpha=pi/6; %逆时针旋转的角度 wnew=w*cos(alpha)+h*sin(alpha); %新图像的宽width hnew=w*sin(alpha)+h*cos(alpha); %新图像的高heighth wnew=ceil(wnew); %取整 hnew=ceil(hnew); u0=w*sin(alpha); %平移量 T=[cos(alpha),sin(alpha);-sin(alpha),cos(alpha)]; %变换矩阵 Imgnew1=zeros(hnew,wnew); Imgnew2=zeros(hnew,wnew); Imgnew3=zeros(hnew,wnew); for u=1:hnew %u和v是新图像坐标,变换到原图像坐标x和y中。 for v=1:wnew

tem=T*([u;v]-[u0;0]); x=tem(1); y=tem(2); if x>=1 & x<=h & y>=1 & y<=w %若变换出的x和y在原图像范围内 x_low=floor(x); x_up=ceil(x); y_low=floor(y); y_up=ceil(y); if (x-x_low)<=(x_up-x) %采用最近点法,选取距离最近点的像素赋给新图像x=x_low; else x=x_up; end if (y-y_low)<=(y_up-y) y=y_low; else y=y_up; end p1=Img(x_low,y_low); %双线性插值,p1到p4是(x,y)周围的四个点p2=Img(x_up,y_low); p3=Img(x_low,y_low); p4=Img(x_up,y_up); s=x-x_low; t=y-y_low; Imgnew1(u,v)=Img(x,y); Imgnew2(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4; end if x>=2 & x<=h-2 & y>=2 & y<=w-2 %若变换出的x和y在原图像范围内x_1=floor(x)-1; x_2=floor(x); x_3=floor(x)+1; x_4=floor(x)+2; y_1=floor(y)-1; y_2=floor(y); y_3=floor(y)+1; y_4=floor(y)+2; A=[sw(1+x-x_2),sw(x-x_2),sw(1-(x-x_2)),sw(2-(x-x_2))]; C=[sw(1+y-y_2),sw(y-y_2),sw(1-(y-y_2)),sw(2-(y-y_2))]; B=[ Img(x_1,y_1),Img(x_1,y_2),Img(x_1,y_3),Img(x_1,y_4); Img(x_2,y_1),Img(x_2,y_2),Img(x_2,y_3),Img(x_2,y_4); Img(x_3,y_1),Img(x_3,y_2),Img(x_3,y_3),Img(x_3,y_4); Img(x_4,y_1),Img(x_4,y_2),Img(x_4,y_3),Img(x_4,y_4)]; Imgnew3(u,v)=A*B*C'; end

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

大连理工大学实验报告 学院(系):电信专业:生物医学工程班级:**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) x(n)序列 h(n)序 列 调用conv 函数的线性卷积后序列 按步骤计算的线性卷积后序列

相关主题
文本预览
相关文档 最新文档