Advertisement

门信号卷积matlab,MATLAB信号卷积.doc

阅读量:

利用MATLAB实现信号的时域卷积

一.引言

MATLAB提供了强大的图形处理能力和符号运算能力,并为此类信号的可视化以及时域分析提供了强有力的技术支撑。因此,在编程辅助分析与计算方面我们需要借助这些工具来进行研究工作。目前我们通过编程来辅助计算连续时间信号以及离散时间信号的卷积运算。

为了实现离散序列卷积计算的目的,在MATLAB环境中开发了一个名为dconv()的M函数。该函数能够执行离散序列x1n与x2n之间的卷积运算,并生成结果序列xn=x1n∗x2n。此程序的任务是生成xn序列,并返回其值。

为了实现对连续时间信号卷积积分的数值计算需求,在此基础上我们编写了一个名为ddconv()的Matlab M函数。该函数不仅能够用于计算两个信号的时间域卷积结果,并且能够生成对应的时域波形图。

二.基本原理

对于信号的时域卷积有:

(1)离散时间信号的卷积和:它的定义为,离散时间信号x1n和

x

设序列x1n在区间n1~ n2非零,序列x2n在m1~ m2非零,那么就有x

从上述分析可知,在使用MATLAB中的conv()函数时需要注意卷积结果的时间窗长度已经发生了变化。因此,在绘制卷积后的时间域图像之前需要预先扣除扩展的时间窗长度。如果不扣除扩展的时间窗长度,则绘制出的结果与时间轴将不再准确对应。同时,在调用conv()函数前应预先定义好输入序列x1n和x2n以便正确执行运算。

对于连续的时间信号f1(t)和f2

f

那么可以用分段求和来实现,即:

f

令t=n?t

f

因此,在使用MATLAB实现两个函数f_1(t)f_2(t)的卷积积分时,在t轴上选择一个足够小的时间间隔\Delta t(即\texttt{?}),以便使得f_n(\texttt{?})能够较好地逼近连续时间信号f(t)。具体步骤如下:首先分别对f_1(t)f_2(t)\Delta t为间隔进行采样操作,从而获得对应的离散序列F_1(n\Delta t)F_2(n\Delta t);接着构建相应的自变量向量t = [0, \Delta t, 2\Delta t, \dots];最后调用MATLAB系统的conv函数

三.实现方法

首先开发一个名为dconv的MATLAB M函数以实现两个序列间的卷积运算,并生成这两个信号在时域上的波形图及其卷积结果。编程思路如附图所示:

从外部获取两个序列

从外部获取两个序列

做这两个序列的时间向量

做这两个序列的时间向量

利用

利用stem命令将这两个序列的图画出来

用conv()函数求这两个序列的卷积

对应好卷积后的时间向量,用

对应好卷积后的时间向量,用

Stem命令将卷积后的图像画出来

框图1

程序如下所示:

function xn=dconv(x1,x2) %任意两序列卷积

x11=-5:length(x1)-6; %设定x1(n)的时间向量

x22=-5:length(x2)-6; %设定x2(n)的时间向量

subplot(131),stem(x11,x1,’fill’),grid on; %画x1(n)的图像

title('x1(n)=u(n)-u(n-4)');

xlabel('n');

ylabel('x(n)');

set(gca,'xtick',-20:20);

axis([(min(x11)-1),(max(x11)+1),(min(x1)-1),(max(x1)+1)])

subplot(132),stem(x22,x2,’fill’),grid on; %画x2(n)的图像

title('x2(n)=u(n)-u(n-4)');

xlabel('n');ylabel('x(n)');

set(gca,'xtick',-20:20);

axis([(min(x22)-1),(max(x22)+1),(min(x2)-1),(max(x2)+1)])

xmin1=min(x11);

xmax1=max(x11);

xmin2=min(x22);

xmax2=max(x22);

t=(xmax2+xmax1)-(xmin2+xmin1)+1;

xx=-10:(t-6-5); %设定x(n)的时间向量

xn=conv(x1,x2) %求x(n)=x1(n)*x2(n)

subplot(133),stem(xx,xn,’fill’),grid on; %画x(n)的图像

title('x(n)=x1(n)*x2(n)')

xlabel('n');

ylabel('x(n)');

set(gca,'xtick',-100:100);

axis([(min(xx)+5),(max(xx)-7),(min(xn)-0.5),(max(xn)+0.5)])

end

编写一个名为ddconv(n)的M函数以计算两个连续时间信号之间的卷积关系,并能够对这两个连续信号进行卷积运算的同时生成相应的时域波形图以直观展示结果变化过程。其流程可参考图示2:

用conv

用conv()函数求这两个信号的卷积

再乘以抽样的间隔,就是我们所求

从外部获取两个离散化的连续信号

做这两个信号离散后的时间向量

做这两个信号离散后的时间向量

对应好卷积后的时间向量,用plot

对应好卷积后的时间向量,用

plot

全部评论 (0)

还没有任何评论哟~