龙源期刊网 http://www.qikan.com.cn
基于Matlab的离散卷积
作者:刘国良
来源:《现代电子技术》2009年第05期
摘 要:卷积运算广泛用于通讯、电子、自动化等领域的线性系统的仿真、分析及数字信号处理等方面。在Matlab中可以使用线性卷积、圆周卷积和快速傅里叶运算实现离散卷积。线性卷积是工程应用的基础,但圆周卷积和快速傅里叶运算实现线性离散卷积具有速度快等优势,圆周卷积采用循环移位,在Matlab中没有专用函数,需要根据圆周卷积的运算过程编制程序代码;快速傅里叶运算(FFT)是DSP的核心算法,在序列比较长时FFT是一种最合适的方法,运算速度快、程序简单,序列越长其优势越明显。以同一个例子介绍了进行离散卷积仿真运算的两种方法与特点。
关键词:Matlab;数字信号处理;离散卷积运算;快速傅里叶运算 中图分类号:TP311文献标识码:B 文章编号:1004-373X(2009)05-125-02
Discreted Convolution Based on Matlab LIU Guoliang
(Luoyang Institute of Science and Technology,Luoyang,471000,China)
Abstract:The convolution operation is widely applied in the field of linear system
simulations,analysis and DSP design of communication,electronics,automatic system and so on,linear convolution,circular convolution and FFT for discreted convolution emulation operation can be
adopted in Matlab.Linear convolution is the foundation of project application,but circular convolution and FFT in linear convolution have advantages of fast speed.Circular convolution adopts circulating shift,there is not privately function in Matlab,it needs to draw up program code according to the operational course of circular convolution.FFT is the major operation of DSP,when sequence grows fairly,FFT is a kind of most suitable method,it is more rapidly in operational speed and program simple,the longer of the sequence the more of its advantage.With a same example,to carry out characteristic and two kinds of method of emulation operation for discreted convolution are introduced.
Keywords:Matlab;DSP;discreted convolution operation;FFT
龙源期刊网 http://www.qikan.com.cn
0 引 言
在数字信号处理(DSP)系统中,无论在时域或频域都离不开卷积运算和快速傅里叶(FFT)运算。Matlab具有强大的矩阵运算能力,方便实用的绘图功能和语言的高度集成性,在DSP开发中,使用Matlab可以快速对系统进行仿真运算。
设输入信号为x(t),其频谱函数为X(jΩ),该信号通过滤波器h(t)后,其输出信号y(t)的频谱函数Y(jΩ)是频谱函数X(jΩ)与滤波器的频谱函数H(jΩ)的乘积,即: Y(jΩ)=X(jΩ)H(jΩ)(1)
该信号通过低通滤波器的示意图如图1所示。
而在时域,输出信号y(t)实际是输入信号x(t)与滤波器h(t)的卷积。就是说频谱函数的乘积相当于时间函数的卷积,反之亦然。即:
-∞x(τ)h(t-τ)dτ(2)
图1 信号通过低通滤波器的示意图
由于DSP主要依靠计算机完成,而计算机无论在时域或频域只能处理有限长的离散信号,因此上述关系可表示为: Y(ω)=X(ω)H(ω)(3)
y(n)=∑∞m=-∞x(m)h(n-m)=x(n)*h(n)(4) 式中:n表示离散时间;数字频率样频率和周期。
1 实现离散卷积的方法
可以使用线性卷积、圆周卷积实现离散卷积,也可以根据时域信号函数与频谱函数的关系,使用快速傅里叶变换(FFT,IFFT)实现离散卷积。 1.1 圆周卷积
;f为输入信号频率;
为抽
龙源期刊网 http://www.qikan.com.cn
线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等,专用函数conv(x,h)可完成线性卷积过程。
圆周卷积的计算速度要远远快于线性卷积,如果选择圆周卷积的长度可以用圆周卷积取代线性卷积。方法如下: (1) 定义圆周卷积的长度:选择 (2) 将两个序列的长度都补足为L: 将长为 将长为
的序列x(n)延长到L,补L-的序列h(n)延长到L,补L-个零, 个零。 -1。
-1,则
(3) 反转x(n),周期延拓为序列 (n),取主周期。
(4) 循环移位:与线性卷积不同,圆周卷积运算中采用的是循环移位,有限长序列x(n)的循环移位定义为:
其含义如下: ① ②
表示 x(n) 的周期延拓序列 (n)的移位:
表示对移位的周期序列
取主值序列,所以f(n)仍然是
一个长度为N的有限长序列。
为此定义一个位移函数cirshiftd.m如下: %保存函数为cirshiftd.m function fm= cirshiftd(x,m,N); n=[0:1:N-1]; fm=x(mod(n-m,N)+1);
这里的x即表示对向右移位N位的周期序列
取主值序列的运算。
龙源期刊网 http://www.qikan.com.cn
(5) 将序列x与h进行循环移位生成的矩阵H的转置矩阵相乘,即完成将x(m)和h(n-m)所有对应项相乘之后相加,完成圆周卷积。
例:已知x=[1 2 3 2 ]和h=[1 1 1],求两序列的卷积。 用圆周卷积的计算程序如下: %′圆周卷积′主程序 x=[1 2 3 2 ]; h=[1 1 1];
N=length(x)+length(h)-1; x=[x,zeros(1,N- length(x))]; h=[h,zeros(1,N- length(h))];
n=[0:1:N-1]; h=h(mod(-n,N)+1); H=zeros(N,N); for n=1:1:N
H(n,:)=cirshiftd(h,n-1,N);%调用位移函数 end y=x*H′; n0=[0:1:N-1]; stem(n0,y); title(′圆周卷积′);
xlabel(′( n )′);ylabel(′ y(n)′);
龙源期刊网 http://www.qikan.com.cn
运行结果:y=[1 3 6 7 5 2 ] 1.2 线性卷积的FFT算法
FFT运算具有速度快、计算量小等优越性,是DSP的核心算法。根据信号在时域与频域的关系,可以用FFT计算线性卷积。方法如下: (1) 定义长度:选择
-1。
(2) 求两个要卷积序列的N点频谱函数: 求X(k)=FFT[x(n)] 求H(k)=FFT[h(n)] (3) 将两个频谱函数相乘: 求Y(k)=H(k)X(k)
(4) 对乘积进行N点快速傅里叶反变换(IFFT): 求y(n)=IFFT[Y(k)]
可见,只要进行二次FFT,一次IFFT就可完成线性卷积计算。在x(n),h(n) 两序列长度比较接近或相等的情况,当运算的序列长度 N>32时,上述计算线性卷积的方法比直接计算线性卷积有明显的优越性,长度值越大优势越明显。 上例用FFT运算的程序如下: x=[1 2 3 2 ]; h=[1 1 1];
N= length(x) + length(h)-1; X=fft(x,N); H=fft(h,N); Y=X.*H; y=ifft(Y,N);
龙源期刊网 http://www.qikan.com.cn
n=0:1:N-1; stem(n,y);
title(′FFT 线性卷积′); xlabel(′( n )′);ylabel(′ y(n)′); 2 结 语
用圆周卷积和FFT运算离散卷积具有很大优势,在Matlab中圆周卷积没有专用函数,需要自己编制,在序列比较长时FFT是一种最合适的方法,可以快速得出仿真运算的结果。选择圆周卷积或FFT运算线性离散卷积可提高DSP设计的效率。 参考文献
[1]徐科军.信号分析与处理[M].北京:清华大学出版社,2006.
[2]刘顺兰,吴杰.数字信号处理[M].西安:西安电子科技大学出版社,2003. [3]朱仁峰.精通Matlab 7[M].北京:清华大学出版社,2006. [4]燕庆明.信号与系统[M].北京:高等教育出版社,2004.
[5]俞卞章.数字信号处理[M].2版.西安:西北工业大学出版社,2006. [6]徐莉,罗新民,徐燕红.卷积码的Matlab仿真及其性能研究.现代电子技术,2006,29(11):-66.
[7]黄琼玲,刘振兴,尉宇.一种分数阶傅里叶变换快速算法的研究.现代电子技术,2008,31(9):156-157.
作者简介
龙源期刊网 http://www.qikan.com.cn
刘国良 男,1958年出生,计算机高级工程师。研究方向为计算机CAD设计、电子技术应用和无线电等。