matlab中冲激函数延迟,《MATLAB信号处理超级学习手册》——第2章 时间信号与系统 2.1 离散序列...

本节书摘来自异步社区《MATLAB信号处理超级学习手册》一书中的第2章,第2.1节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第2章 时间信号与系统

一个离散时间信号是一个整数值变量n的函数,表示为x(n)或{x(n)}。尽管独立变量n不一定表示“时间”(例如,n可以表示温度或距离),但x(n)一般被认为是时间的函数。因为离散时间信号x(n)对于非整数值n是没有定义的。

离散时间信号的波形绘制在MATLAB中一般用stem函数。stem函数的基本用法和plot函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果需要实心,需使用参数“fill”、“filled”,或者参数“.”。

由于MATLAB中矩阵元素的个数有限,所以MATLAB只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。

2.1 离散序列

MATLAB信号处理超级学习手册

离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用x(n)来表示,自变量必须是整数。

离散时间信号(Discrete-time Signal)是指在时间上取离散值,幅度取连续值的一类信号,可以用序列(Sequence)来表示。

序列是指按一定次序排列的数值x(n)的集合,表示为:

3e951bbee0a3fa7f207397dd2f13b112.png

注意:其中n为整数,x(n)表示序列,对于具体信号,x(n)也代表第n个序列值。特别应当注意的是,x(n)仅当n为整数时才有定义,对于非整数,x(n)没有定义,不能错误地认为x(n)为零。

2.1.1 单位取样序列

单位取样序列(也称单位脉冲序列)δ(n),定义为:

df045803de5cc1543b35be0ec3a57cc6.png

单位取样序列δ(n)的特点是仅在时序列n=0时值为1,n取其他值时,序列值为0。它的地位与连续信号中的单位冲激函数δ(t)相当。不同的是n=0时δ(n)=1,而不是无穷大。

在MATLAB中,冲激序列可以用zeros函数实现,如要产生N点的单位取样序列,可以通过以下命令实现:

x=zeros(1,N);

x(1)=1;

【例2-1】编制程序产生单位取样序列δ(n)及δ(n-20),并绘制出图形。运行程序如下:

clear all

n=50;

x=zeros(1,n);

x(1)=1;

xn=0:n-1;

subplot(121);

stem(xn,x);

grid on

axis([-1 51 0 1.1]);

title('单位取样序列δ(n)')

ylabel('δ(n)');

xlabel('n');

k=20;

x(k)=1;

x(1)=0;

subplot(122);

stem(xn,x);

grid on

axis([-1 51 0 1.1]);

title('单位取样序列δ(n-20)')

ylabel('δ(n-20)');

xlabel('n');

运行结果如图2-1所示。

aa956a0be3a501fda56d3597228d9e52.png

2.1.2 单位阶跃序列

单位阶跃序列(Unit Step Sequence)u(n),定义如下:

4890459ca624ac7533623cab82845e2f.png

在MATLAB中,阶跃序列可以用ones函数实现,如要产生N点的单位阶跃序列,可以通过以下命令实现:

x=ones(1,N);

【例2-2】编制程序产生单位阶跃序列u(n)及u(n-20),并绘制出图形。运行程序如下:

clear all

n=50;

x=ones(1,n);

xn=0:n-1;

subplot(211);

stem(xn,x);

grid on

axis([-1 51 0 1.1]);

title('单位阶跃序列u(n)')

ylabel('u(n)');

xlabel('n');

x=[zeros(1,20),1,ones(1,29)];

subplot(212);

stem(xn,x);

grid on

axis([-1 51 0 1.1]);

title('单位阶跃序列u(n-20)')

ylabel('u(n-20)');

xlabel('n');

运行结果如图2-2所示。

caa9856664fd9cf5c7ce326134894f6d.png

2.1.3 矩形序列

矩形序列(Rectangular Sequence)定义为:

080dcce148e79c89d5a57e34d922f530.png

式中的N称为矩形序列的长度。符号R N(n)的下标N表示矩形序列的长度,如R 4(n)表示长度N=4的矩形序列。

单位取样序列δ(n),单位阶跃序列U(n)和矩形序列R N(n)之间的关系如下:

523240738e56de57d4e44ed6571b3812.png

一般地,若序列y(n)与序列x(n)之间满足y(n)=x(n-k)的关系,则称y(n)为x(n)的移位(或延迟)序列。

2.1.4 正弦序列

正弦序列的定义如下:

2b98b6dfb996dfb287e25f0899041298.png

式中ω称为正弦序列的数字域频率,单位为弧度,它表示序列变化的速率,或者表示相邻两个序列值之间相差的弧度数。

如果正弦序列是由连续信号采样得到的,那么:

f09db637cd34004ebe9b4d84c82fe87b.png

因为在数值上序列值等于采样值,可以得到数字域频率与模拟角频率的关系为:

06f4737874af8347fb3eab45cddff2e3.png

上式具有普遍意义,它表明由连续信号采样得到的序列,模拟角频率Ω与数字域频率ω成线性关系。再由采样频率f s与采样间隔T互为倒数,上式也可以写成下列形式:

f1e44f661e436f220624bb09c50e639e.png

上式表示数字域频率ω可以看作模拟角频率Ω对采样频率f s的归一化频率。

【例2-3】试用MATLAB命令绘制正弦序列x(n) = sin (frac{{npi }}{6}) 的波形图。运行程序如下:

clear all

n=0:39;

x=sin(pi/6*n);

stem(n,x);

xlabel('n')

ylabel('h(n)')

title('正弦序列')

axis([0,40,-1.5,1.5]);

grid on;

运行结果如图2-3所示。

b684689ffd98c5f7cb08a3fbbce05df1.png

2.1.5 实指数序列

实指数序列定义如下:

36d5039558b235ffa8282ff7fb3b912f.png

运行程序如下:

clear

n=0:10;

a1=1.2;a2=-1.2;a3=0.8;a4=-0.8;

x1=a1.^n;

x2=a2.^n;

x3=a3.^n;

x4=a4.^n;

subplot(221)

stem(n,x1,'fill');

grid on;

xlabel('n'); ylabel('h(n)');

title('x(n)=1.2^{n}')

subplot(222)

stem(n,x2,'fill');

grid on

xlabel('n'); ylabel('h(n)');

title('x(n)=(-1.2)^{n}')

subplot(223)

stem(n,x3,'fill');

grid on

xlabel('n') ; ylabel('h(n)');

title('x(n)=0.8^{n}')

subplot(224)

stem(n,x4,'fill');

grid on

xlabel('n'); ylabel('h(n)');

title('x(n)=(-0.8)^{n}')

运行程序如图2-4所示。

021529c98294a04f64b46fed57f87368.png

2.1.6 复指数序列

复指数序列定义为:

x(n) = e^{(a + jomega _0 )n}

(2-13)

当a=0时,得到虚指数序列x(n) = e^{jomega _0 n} ,式中ω 0是正弦序列的数字域频率。由欧拉公式知,复指数序列可进一步表示为:

01d6c469a0ba8d76d8065c9aa5539ace.png

与连续复指数信号一样,下面将复指数序列实部和虚部的波形分开讨论,得出如下结论:

(1)当a>0时,复指数序列x(n)的实部和虚部分别是按指数规律增长的正弦振荡序列;

(2)当a<0时,复指数序列x(n)的实部和虚部分别是按指数规律衰减的正弦振荡序列;

(3)当a=0时,复指数序列x(n)即为虚指数序列,其实部和虚部分别是等幅的正弦振荡序列。

【例2-5】用MATLAB命令画出复指数序列x(n) = 2e^{( - frac{1}{{10}} + jfrac{pi }{6})n} 的实部、虚部、模及相角随时间变化的曲线,并观察其时域特性。

运行程序如下:

clear

n=0:30;

A=2;a=-1/10;b=pi/6;

x=A*exp((a+i*b)*n);

subplot(2,2,1)

stem(n,real(x),'fill');

grid on

title('实部');

axis([0,30,-2,2]),xlabel('n')

subplot(2,2,2)

stem(n,imag(x),'fill');

grid on

title('虚部');

axis([0,30,-2,2]) ,xlabel('n')

subplot(2,2,3)

stem(n,abs(x),'fill'),grid on

title('模'),axis([0,30,0,2]) ,xlabel('n')

subplot(2,2,4)

stem(n,angle(x),'fill');

grid on

title('相角');

axis([0,30,-4,4]) ,xlabel('n')

运行结果如图2-5所示。

fad184596cd7cd6e17c70193512f1692.png

2.1.7 周期序列

如果对所有的n,关系式x(n)=x(n+N)均成立,且N为满足关系式的最小正整数,则定义x(n)为周期序列,其周期为N。

例如,对于正弦序列,设x(n) = Asin (omega _0 n + varphi ) ,那么x(n + N) = Asin [omega _0 (n + N) + varphi ] = Asin (omega _0 n + varphi + omega _0 N)

如果x(n)=x(n+N),则要求omega _0 N = 2pi k 或N = (2pi /omega _0 )k 。式中N和k均取整数,而且k的取值要保证N是最小的正整数。

对于具体的正弦序列周期(包括余弦序列及复指数序列)有以下3种情况:

(1)当2π/ω 0为整数时,k=1,该序列是以2π/ω 0为周期的周期序列。例如序列sin(πn/4),ω 0=π/4,2π/ω 0=8,该正弦信号的周期为8。

(2)当2π/ω 0不是整数,是一个有理数时,设2π/ω 0=P/Q,式中P、Q是整数,并且P/Q为最简分数;取k=Q,则该序列的周期N=P。例如sin(5πn/8),ω 0=5π/8,2π/ω 0=16/5,取k=5,该正弦信号的周期为16。

(3)当2π/ω 0是一个无理数时,任何整数都不能使N为正整数,则该序列不是周期序列。例如sin(2n/5),ω 0=2/5,2π/ω 0=5π,该正弦信号不是周期序列。

【例2-6】已知xleft( n right) = 0.8^n R_8 left( n right) ,利用MATLAB生成并图示x(n), x(n-m),x((n))8 R N(n),其中N=24,0

运行程序如下:

N=24;M=8;m=5;

%设移位值为5

n=0:N-1;

x1=0.8.^n;x2=[(n>=0)&(n

xn=x1.*x2;

%产生x(n)

[xm,nm]=sigshift(xn,n,m);

%产生x(n-m)

xc=xn(mod(n,8)+1);

%产生x(n)的周期延拓,求余后加1是因为MATLAB向量下标从开始

xcm=xn(mod(n-m,8)+1);

%产生x(n)移位后的周期延拓

subplot(2,2,1);stem(n,xn,'.');

axis([0,length(n),0,1]);title('x(n)')

subplot(2,2,2);stem(nm,xm,'.');

axis([0,length(nm),0,1]);title('x(n-5)')

subplot(2,2,3);stem(n,xc,'.');

axis([0,length(n),0,1]);title('x(n)的周期延拓')

subplot(2,2,4);stem(n,xcm,'.');

axis([0,length(n),0,1]);title('x(n)的循环移位')

运行结果如图2-6所示。

d1c7ace314a597ebffffa06a551ac6fa.png

运行过程中用到的子程序为:

function[y,n]=sigshift(x,m,n0)

% y(n)=x(n-n0)

n=m+n0;y=x;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值