线性卷积与圆周卷积

合集下载

线性卷积与圆周卷积的计算

线性卷积与圆周卷积的计算
周三晚上
数字信号处理实验报告
实验名称:线性卷积与圆周卷积的计算(实验四)
专业班 级: 学生姓名: 学 号: 指导教师:
二○一 年 月 日
1
一、 实验原理 1.线性卷积
当系统输入序列为 x(n),系统的单位冲激响应为 h(n),输出序列为 y(n),则线性时不变系统 y(n) = x(n)*h(n). 2.圆周卷积
圆周移位代替线性移位的好处: 时域圆周卷积在频域上相当于两序列的 DFT 的相乘,而计算 DFT 可 以采用它的快速算法——快速傅立叶变换(FFT),因此圆周卷积和线 性卷积相比,计算速度可以大大加快。
7
调试中所遇到的问题: 图形输出与算得的不符,经过结果逆推回去,发现计算圆周卷积的一 个矩阵没有转置。 圆周卷积与线性卷积的关系: 根据实验结果,可以发现,当 N>=L+P-1 时,圆周卷积等于线性卷积; 而当 N<L+P-1 时,圆周卷积等于两个序列的线性卷积加上时间的混 叠。
6
线性卷积的运算步骤: 求 x1(n)与 x2(n) 的线性卷积:对 x1(m)或 x2(m)先进行镜像移 位 x1(-m),对移位后的序列再进行从左至右的依次平移 x(n-m),当 n=0,1,2.…N-1 时,分别将 x(n-m)与 x2(m)相乘,并在 m=0,1,2.… N-1 的区间求和,便得到 y(n)。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
圆周卷积通用程序
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function yc = circonv(x1,x2,N) % 定义函数 if length(x1)>N

数字信号处理简答题完整版

数字信号处理简答题完整版

数字信号处理简答题 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】1.一般模拟信号的D F T过程连续时间信号的傅里叶变换所得信号的频谱函数是模拟角频率Ω的连续函数;而对连续时间信号进行时域采样所得序列的频谱是数字角频率ω的连续函数。

而将采样序列截断为有限长序列后做离散傅里叶变换是对被截断后序列频谱函数的等间隔采样。

由于DFT是一种时域和频域都离散化了的变换,因此适合做数值运算,成为分析信号与系统的有力工具。

但是,用DFT对连续时间信号做频谱分析的过程中,做了两步工作,第一是采样;第二是截断。

因此,最后所得到的离散频谱函数和原连续信号的连续频谱肯定存在误差。

下面我们就来分析这些误差究竟产生在哪些地方。

首先由傅里叶变换的理论可知,对于模拟信号来说,若信号持续时间有限长,则其频谱无限宽;若信号的频谱有限宽,则其持续时间无限长。

所以严格来讲,持续时间有限的带限信号是不存在的。

实际中,对频谱很宽的信号,为防止时域采样后产生频谱混叠,先用采样预滤波的方法滤除高频分量。

那么必然会导致滤波后的信号持续时间无限长。

设前置滤波器的输出信号为xa (t),其频谱函数Xa(jΩ),它们都是连续函数,其中xa (t)为无限长,而Xa(jΩ)为有限长。

首先对该信号作时域采样,采样周期为T,将得到离散的无限长的序列x(nT)。

由于习惯上描述序列的频谱时用ω作为频率变量,因此必须探寻x(n)的频谱X(e jω)与xa (t)的频谱Xa(jΩ)之间的关?系。

理论上已推得,X(e jω)就是Xa(jΩ)以2π/T的周期延拓后再将频率轴Ω作T倍的伸缩后得到的图形再乘以一个常数1/T得到。

也就是X(e jω)= X(e jΩT)=1/T*∑Xa[j(Ω-k*2π/T)]这一个过程中,只要采样频率足够大,即T足够小,理论上是可以保证无混叠的,也就是能由序列的频谱X(e jω)完全恢复模拟信?号的频谱Xa(jΩ)。

线性卷积和圆周卷积的关系-email-0

线性卷积和圆周卷积的关系-email-0

1、离散傅里叶级数变换推导(参考书P102)dsp31:ppt251、DFS 反变换的推导:连续周期信号的傅立叶级数为∑∑∑∞-∞=∞-∞=∞-∞=ΩΩ=Ω====Ω===ΩΩ=k nkN jk nT NT jk p p p k tjk e k X e k X nT x n x NT T NT T nT t T ek X t x πππππ2020000)(~)(~)(~)(~/2/2,,,/2)()(~0则令其中频域的周期和采样间隔:0)//(2/22Ω====ΩN N T T f p s s πππ)(~nT x 时域周期、离散序列,周期为N ,采样间隔T ;)(~0Ωk X 频域周期、离散序列,周期为N ,采样间隔0Ω;反变换推导初步结果:+∞-∞==∑∞-∞=~,)(~)(~2n e k X n x k nk N j π进一步化简。

由于knN j n rN k N j e e ππ2)(2=+离散傅立叶级数只能取k=0~N-1的N 个独立谐波分量。

因此有+∞-∞==∑-=~,)(~)(~102n e k X n x N k nk N j π2、DFS 正变换的推导:下式实际上是等比级数公式⎩⎨⎧==--=∑-=r m m N r N e e e r N j rNN j N n rn N j 其他,为任意整数0,,1122102πππ有)(~)(~)(~])(~[)(~1010)(21010)(2101022102r X N e k X e k X e e k X e n x N k N n n r k N j N n N k n r k N j N n N k rn N j kn N j N n rn N j ====∑∑∑∑∑∑∑-=-=--=-=--=-=--=-πππππ因此∑-=-=102)(~1)(~N n knN j e n x N k X π3、正、反变换最终形式推导:为与其他变换的书写形式统一,常写成∑-=-=102)(~)(~N n knN j e n x k X π,+∞-∞=~k∑-==102)(~1)(~N k nkN j e k X N n x π,+∞-∞=~n以上就是离散傅立叶级数(DFS )变换对。

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

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

数字信号处理实验线性卷积圆周卷积⼤连理⼯⼤学实验报告学院(系):电信专业:⽣物医学⼯程班级:**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]。

实验二 利用DFT计算线性卷积

实验二  利用DFT计算线性卷积

实验二 利用DFT 计算线性卷积一、实验目的1.掌握利用FFT 计算线性卷积的原理及具体实现方法。

2.加深理解重叠相加法和重叠保留法。

3.考察利用FFT 计算线性卷积各种方法的适用范围。

二、实验设备与环境计算机、MATLAB 软件环境三、实验基础理论1、线性卷积与圆周卷积设)(n x 为L 点序列,)(n h 为M 点序列,)(n x 和)(n h 的线性卷积为:∑∞-∞=-==m m n h m x n h n x n y )()()(*)()()(n y 的长度为:L+M-1,)(n x 和)(n h 的N 点圆周卷积为:)())(()()(10n R m n h m x n y N N m N -=∑-= 其中:1-+≥L M N此时圆周卷积等于线性卷积,而圆周卷积可利用FFT 计算。

2、快速卷积利用FFT 计算线性卷积步骤如下:(1)为了使线性卷积可以利用圆周卷积来计算,必须选择;同时为了能使用基2-FFT 完成卷积运算,要求γ2=N 。

采用补零的办法是)(n x 和)(n h 的长度均为N 。

(2)计算)(n x 和)(n h 的N 点FFT)()()()(k H n h k X n x FFTFFT →→(3)组成卷积 )()()(k H k X k Y =(4)利用IFFT 计算IDFT ,得到线性卷积y(n)(k)()IFFT Y y n −−−→3、分段卷积我们考察单位取样响应为)(n h 的线性系统,输入为)(n x ,输出为)(n y ,则)(*)()(n h n x n y =当输入序列时再开始进行卷积,会使输出相对输入有较大的延时,再者如果序列太长,需要大量的存储单元。

为此,我们把,分别求出每段的卷积,合在一起其到最后的总输出。

这种方法称为分段卷积。

分段卷积可细分为重叠相加法和重叠保留法。

重叠保留法:设)(n x 的长度为X N ,)(n h 的长度为M 。

我们把序列)(n x 分成多段N 点序列)(n x i ,每段与前一段重叠M-1个样本。

离散傅立叶变换(DFT)的性质

离散傅立叶变换(DFT)的性质

例:求序列:x(n) = (n)+2 (n-1)+ 3(n-2)+4 (n-3) 的4点DFT。 N 1
X ( k ) DFT[ x( n)] x( n)W4nk
n 0 3
nk x ( n ) W N n 0
(0 k N 1)
( 0 k 3)
1 2W4k 3W42 k 4W43k
* 又据Xep(k)的对称性: X ep (k ) X ep (( N k )) N RN (k )
X (k ) X (( N k )) N RN (k )
*
当x(n)为纯虚序列时,根据特性之四,则
X(k)=Xop(k)
* 又据Xop(k)的对称性: X op (k ) X op (( N k )) N RN (k )
选择N max 补零达到N点。
N1 , N 2 为变换长度,短者进行
二、序列的圆周移位 1.定义 一个有限长序列x(n)的圆周移位定义为
xm ( n) xn m N RN n
这里包括三层意思: (1) 先将x(n)进行周期延拓
(2)再进行移位
~ x (n m) xn m N
n ( N 1 )
nk * x ( n ) W N ]
nk * [ x ( n)W N ] X * (( k )) N RN ( k )
x * (( n)) N RN ( n) X * ( k )
5.共轭对称特性之三
Re[ X (k )] j Im[ X (k )]
例:设x1(n)和x2(n)都是N点的实数序列,试用一次 N点DFT运算来计算它们各自的DFT:
DFT [ x1 (n)] X 1 (k )

线性卷积与圆周卷积演示程序的设计

线性卷积与圆周卷积演示程序的设计

1.设计基本原理1.1课题研究的背景卷积运算广泛的应用于通讯、电子、自动化等领域的线性系统的仿真、分析及数字信号处理等方面。

在MATLAB中可以使用线性卷积和圆周卷积实现离散卷积。

线性卷积是工程应用的基础,但圆周卷积实现线性离散卷积具有速度快等优势。

圆周卷积采用循环移位,在MATLAB中没有专用函数,需要根据圆周卷积的运算过程编制程序代码。

本实验主要围绕线性卷积和圆周卷积的演示程序设计来展开,给出了线性卷积和圆周卷积演示的程序及动态实现。

在线性时不变连续系统中,利用系统的冲激响应和叠加原理来求系统对任意激励信号作用时的零状态响应,这就是卷积方法的原理。

因此,在时域内,卷积运算是求解线性非时变系统零状态响应的重要方法,特别是激励信号为时限信号时尤其如此。

卷积运算的计算比较复杂,是信号与系统分析中的重点和难点,特别适合用于计算机来计算。

以往的卷积积分多用fortran、c、VB等语言编程,不仅编程繁琐,而且可视性差。

用MATLAB来计算卷积积分问题要比用C、FORTRAN 等语言完成相同的事情简洁的多。

在MATLAB中,有很多现成的函数可以直接调用,而且在计算机方面,可以直接用相应的计算机符号即可。

在编写程序语言方面,它与其他语言相比更为简单。

正因为上述原因,使他深受工程技术人员及科学专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不仅可缺少的基础软件。

1.2课题研究意义本课程为电子信息工程专业的独立实践课,是建立在信号与系统、数字信号处理等课程的基础上,加强实践环节而开设的。

其目的在于通过本课程设计使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使学生能有效地将理论和实际紧密结合;增强学生软件编程实现能力和解决实际问题的能力。

通过课程设计,主要达到以下的目的:(1)使学生增进对MATLAB的认识,加深对信号处理理论的理解。

(2)使学生掌握数字信号处理中频谱分析的概念和方法。

[Matlab]线性卷积圆周卷积代码实现

[Matlab]线性卷积圆周卷积代码实现

[Matlab]线性卷积圆周卷积代码实现1、线性卷积周期卷积圆周卷积的关系:2、Matlab实验及现象圆周卷积:1 %% 圆周卷积实例程序2 %% Alimy 2014年11⽉21⽇20:19:123 clc;4 clear;5 %%准备数据6 N = 5;7 M = 5;8 L = N + M -1;9 x1n = [1,2,3,4,5];10 x2n = [1,5,9,7,3];11 kn_x1 = 0:1:N-1;12 kn_x2 = 0:1:M-1;13 kn_y = 0:1:L-1;14 %%画原始有限长序列15 subplot(4,2,1);16 stem(kn_x1,x1n);17 xlabel('n','FontSize',15);18 ylabel('x1n','FontSize',15);19 subplot(4,2,2);20 stem(kn_x2,x2n);21 xlabel('n','FontSize',15);22 ylabel('x2n','FontSize',15);2324 x1n_t = [x1n, zeros(1,L-N)]; %%补零25 x2n_t = [x2n, zeros(1,L-M)];26 kn_x1t = 0:1:(N+M-1)-1;27 kn_x2t = 0:1:(N+M-1)-1;28 %%画补0后序列29 subplot(4,2,3);30 stem(kn_x1t,x1n_t);31 xlabel('n','FontSize',15);32 ylabel('x1n补0后','FontSize',15);33 subplot(4,2,4);34 stem(kn_x2t,x2n_t);35 xlabel('n','FontSize',15);36 ylabel('x2n补0后','FontSize',10);3738 x1n_t = [x1n_t,x1n_t,x1n_t,x1n_t]; %沿拓39 x1n_t = fliplr(x1n_t); %翻转40 [x1t_x,x1t_y] = size(x1n_t);41 x1t_numbers = x1t_x * x1t_y;42 kn_x1t = -17:1:18;43 %%画沿拓翻转后的周期序列44 subplot(4,2,5);45 stem(kn_x1t,x1n_t);46 xlabel('t','FontSize',15);47 ylabel('x1n_t补0后再沿拓翻转后','FontSize',10);4849 x2n_t = [zeros(1,L),zeros(1,L),x2n_t,zeros(1,L)];50 kn_x2t = -18:1:17;51 subplot(4,2,6);52 stem(kn_x2t,x2n_t);53 xlabel('t','FontSize',15);54 ylabel('x2n_t补0后沿拓翻转后','FontSize',15);555657 %% 乘加移位58 yn = zeros(1,2*L);59for I = 1:1:1860 x1n_t = circshift(x1n_t,[0,1]);61 yn(I) = x2n_t*x1n_t';62 end6364 kn_yn = 0:1:2*(N+M-1)-1;65 subplot(4,2,7);66 stem(kn_yn,yn);67 xlabel('n','FontSize',15);68 ylabel('圆周卷积结果','FontSize',15);6970 %%取主值序列71 ynmain = zeros(1,L);72for I = 1:1:973 ynmain(I) = yn(I);74 end75 kn_ynm = 0:1:8;76 subplot(4,2,8);77 stem(kn_ynm,ynmain)78 xlabel('n','FontSize',15);79 ylabel('主值序列','FontSize',15);8081 %%cycleConv.m线性卷积:1 %% 线性卷积2 clc;3 clear;4 %%5 N = 5;6 M = 5;7 L = N + M - 1;8 x1n = [1,2,3,4,5];9 kx1 = 0:1:N-1;10 x2n = [1,5,9,7,3];11 kx2 = 0:1:M-1;1213 %% 线性卷积14 yn = conv(x1n,x2n);15 kyn = kx1(1)+kx2(1):1:kx1(end)+kx2(end); % 0:1:(N+M-1)-11617 %% 循环卷积 To do 2014年11⽉20⽇ 15:25:36 循环卷积怎么做1819 %% 画图20 subplot(2,2,1);21 stem(kx1,x1n);22 xlabel('n');23 ylabel('x1n');24 title('信号1');2526 subplot(2,2,2);27 stem(kx2,x2n);28 xlabel('n');29 ylabel('x1n');30 title('信号2');3132 subplot(2,2,3);33 stem(kyn,yn);34 xlabel('n');35 ylabel('yn');36 title('线性卷积结果');37 yn %% 1 7 22 44 69 88 82 47 15 linConv.m结果如下:当 L = N + M -1时,圆周卷积和线性卷积的结果⼀致:yn =1 7 22 44 69 88 82 47 15圆周卷积:线性卷积:。

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

信号、系统与信号处理实验Ⅱ
实验报告
实验名称:线性卷积与圆周卷积的计算
一、 实验目的
(1) 通过编程、上机调试程序,进一步掌握使用计算机解决问题的能力
(2) 掌握线性卷积和圆周卷积软件实现的方法,并验证二者之间的关系
二、 实验内容与要求
1. 线性卷积
当系统输入序列为x(n),系统的单位冲击响应为h(n),输出序列为y (n ),则线性时不变系统输入、输出间的关系为:
Y (n )=h (n )*x (n )
2. 圆周卷积
设两个有限长序列1()x n 和2()x n ,均为N 点,其N 点的DFT 分别为1()X k 和2()X k ,如果312()()()X k X k X k =⋅,则
1
3120()[()()]()N N m x n x
m x n m R n -==-∑ 1
120()(())N N m x m x n m -==-∑
1()x n =○
N 2()x n 01n N ≤≤- 已知两个有限长序列:
()()2(1)3(2)4(3)5(4)x n n n n n n δδδδδ=+-+-+-+-
()()2(1)(2)2(3)h n n n n n δδδδ=+-+-+-
(1) 实验前,预先笔算好这两个序列的线性卷积及下列几种情况的圆周卷积 ①()x n ⑤()h n ②()x n ⑥()h n ③()x n ⑨()h n ④()x n ⑩()h n
(2)编制一个计算两个序列线性卷积的通用程序,计算()()x n h n *。

(3)编制一个计算圆周卷积的通用程序,计算上述4种情况下的两个序列的圆周卷积。

(4)上机调试并记录实验结果
(5)将实验结果和预先笔算的结果比较,验证其正确性。

三、实验程序与结果
函数circonv
function yc=circonv(x1,x2,N)
if length(x1)>N
error;
end
if length(x2)>N
error;
end
x1=[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:N
H(n,:)=cirshifted(x2,n-1,N);
end
yc=x1*H';
函数cirshiftd
function y=cirshiftd(x,m,N)
if length(x)>N
error('x的长度必须小于N');
end
x=[x,zeros(1,N-length(x))];
n=[0:1:N-1];
y=x(mod(n-m,N)+1);
①x(n)⑤y(n)
clear all
xn=[1 2 3 4 5];
hn=[1 2 1 2];
N1=length(xn);
N2=length(hn);
y1n=conv(xn, hn);
ycn=circonv(xn, hn, 5);
ny1=[0:1:length(y1n)-1];
ny2=[0:1:length(ycn)-1];
subplot(2,1,1);
stem(ny1, y1n);
subplot(2,1,2);
stem(ny2, ycn);
clear all;
N1=5;
N2=4;
xn=[1 2 3 4 5];
hn=[1 2 1 2];
yln=conv(xn,hn);
ycn=circonv(xn,hn,6); ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1);
stem(ny1,yln);
ylabel('线性卷积'); subplot(2,1,2);
stem(ny2,ycn);
ylabel('圆周卷积');
③x(n)⑨y(n)
clear all;
N1=5;
N2=4;
xn=[1 2 3 4 5];
hn=[1 2 1 2];
yln=conv(xn,hn);
ycn=circonv(xn,hn,9); ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1);
stem(ny1,yln);
ylabel('线性卷积'); subplot(2,1,2);
stem(ny2,ycn);
ylabel('圆周卷积');
④x(n)⑩y(n)
clear all;
N1=5;
N2=4;
xn=[1 2 3 4 5];
hn=[1 2 1 2];
yln=conv(xn,hn);
ycn=circonv(xn,hn,10); ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1);
ylabel('线性卷积');
subplot(2,1,2);
stem(ny2,ycn);
ylabel('圆周卷积');
四、实验问题解答与体会
①圆周卷积与线性卷积的关系:
若有x1(n)与x2(n)两个分别为N1与N2的有限长序列,则它们的线性卷积y1(n)为N1+N2-1的有限长序列,而它们的N点圆周卷积y2(n)则有以下两种情况:1,当N<N1+N2-1时,y2(n)是由y1(n)的前N点和后(N1+N2-1-N)点圆周移位后的叠加而成;N> N1+N2-1时,y2(n)的前N1+N2-1的点刚好是y1(n)的全部非零序列,而剩下的N-(N1+N2-1)个点上的序列则是补充的零。

②线性卷积运算步骤:
求x1(n)与x2(n)的线性卷积:对x1(m)或x2(m)先进行镜像移位x1(-m),对移位后的序列再进行从左至右的依次平移x(n-m),当n=0,1,2.…N-1时,分别将x(n-m)与x2(m)相乘,并在m=0,1,2.…N-1的区间求和,便得到y(n)
③圆周卷积运算步骤:
圆周卷积过程中,求和变量为m,n为参变量,先将x2(m)周期化,形成x2((m))N,再反转形成x2((-m))N,取主值序列则得到x2((-m))NRN(m),通常称之为x2(m)的圆周反转。

对x2(m)圆周反转序列圆周右移n,形成x2((n-m))NRN(m),当n=0,1,2,…,N-1时,分别将x1(m)与x2((n-m))NRN(m)相乘,并在m=0到N-1区间内求和,便得到圆周卷积y(n)。

通过本次实验,我掌握了线性卷积与圆周卷积软件实现的方法,并验证了两者之间的关系,同时,通过上机调试程序,进一步增强了我使用计算机解决问题的能力。

虽然对于一些细节还是没能做到通透,但是,在理论课上,不解的几个问题,都有了真切的认识。

相关文档
最新文档