第二章 离散时间信号与系统

更新时间:2023-12-08 16:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

★数字信号处理实验指导书★

第二章 离散时间信号与系统

2.1离散信号表示与运算

在数字信号处理中,所有信号都是离散时间信号——序列,表示为 x(n)={...,x(-1),x(0),x(1),…} -∞

MATLAB一般把普通的一维抽样数据信号即抽样序列表示成向量形式。向量可以表示为1×n的或n×1的矩阵,其中n为序列中抽样点的个数。

最简单的把序列引入MATLAB的方法是在命令行输入一个元素表。 例如:

x = [3 -5 7 1 -2 ]

这样就构造了一个表示成行向量的五元素简单实数序列,它是一个n×1的矩阵。当然,也可以用矩阵的转置将其变换为列向量,即1×n的矩阵:

x = x’ 结果为: x = 3 -5 7 1 -2

1. 典型信号表示

(1) 单位抽样序列

n?0?1 ?(n)??n?0?0

在MATLAB中可用函数zeros(1,N) 产生一个由N个零组成的行向量,实现有限区间的δ(n)

x=zeros(1,N)

x(1)=1;

(2) 单位阶跃序列

n?0?1 u(n)??n?0?0

在MATLAB中可用函数ones(1,N) 产生一个由N个1组成的行向量,实现有限区间的u(n)

x = ones(1,N);

(3) 实指数序列 x(n)?ana?R

9

★数字信号处理实验指导书★

MATLAB实现 n = 0:N-1;

x = a.^n; (3) 正(余)弦序列

x(n)?Asin(2?fnTs??) MATLAB实现: n=n1:n2;

x=A*sin(2*pi*f*n*Ts+φ);

n1?n?n2 (5) 复指数序列 x(n)?e(??j?)n?n MATLAB实现 n = 0:N-1;

x = exp( ( r + j*w)*n ); (6) 随机序列

MATLAB提供了两种随机信号:

Rand(1,N)产生[0,1]上均匀分布的随机矢量。

Randn(1,N)产生均值为0,方差为1的高斯随机序列,即白噪声序列。

2. 常用信号表示

常用信号的MATLAB表示见表2-1

表2-1 信号名称 三角波或锯齿波 方波 MATLAB函数 sawtooth(t,width) square(t) 说明 width=0.5产生三角波 width=1产生锯齿波 信号名称 sinc函数 MATLAB函数 Sinc(t) 用MATLAB实现常用函数的程序举例如下: t=0:0.0001:0.2;

x=sawtooth(2*pi*50*t,1);%锯齿波 subplot(2,2,1); plot(t,x);

x=sawtooth(2*pi*50*t,0.5);%三角波 subplot(2,2,2); plot(t,x);

x=square(2*pi*50*t);%方波 subplot(2,2,3);

10

★数字信号处理实验指导书★

plot(t,x);

axis([0,0.2,-1.5,1.5]); t=-5:0.1:5; x=sinc(t); subplot(2,2,4); plot(t,x);

axis([-5,5,-0.4,1.1]); 结果如图2.1所示

图2.1 常用信号的表示

3. 信号的运算

(1) 信号加

x(n) = x1(n) + x2(n)

MATLAB实现: x = x1 +x2 ; 说明:

① 此时序列x1和x2应该具有相同的长度,而且位置对应,才能 相加,否则会出错。

② 若序列x1和x2的长度或位置不同时,应先统一两序列的长度和 位置,然后再进行序列加的操作。 例如:n1 = [0:6];

x1 = [n1>=2] % x1序列的值为: 0 0 1 1 1 1 1

11

★数字信号处理实验指导书★

n2 = [-2:2];

x2 = [n2<=0] % x2序列的值为:1 1 1 0 0 n = min(min(n1),min(n2)):max(max(n1),max(n2)) % n的值为:-2 –1 0 1 2 3 4 5 6 y1=zeros(1,length(n)); y2=y1; y1 ( find( ( n>=min(n1) & n<=max(n1) ) = =1 ) ) = x1 % 序列y1的值为:0 0 0 0 1 1 1 1 1 y2 ( find( ( n>=min(n2) & n<=max(n2) ) = =1 ) ) = x2 % 序列y2的值为:1 1 1 0 0 0 0 0 0 y=y1+y2;

% 序列y的值为:1 1 1 0 1 1 1 1 1

注:find(x)返回x矢量的所有非零索引号。

(2) 信号乘

x(n) = x1(n)·x2(n)

MATLAB实现: x = x1 .*x2 ;

注意:由于序列x1和x2均为行向量,所以序列的相乘采用矩阵相乘的运算符“.*”,

而不是“*”。 当序列x1和x2的长度和位置不同时,应先统一两序列的长度和位置,然后再进行序列乘的操作。

(3) 改变比例

y(n) = k·x(n)

MATLAB实现: y = k * x;

(4) 信号折叠

y(n) = x(-n)

MATLAB实现: y = fliplr(x); (5) 抽样和 n2 y?x(n)n?n1

MATLAB实现:

y = sum(x(n1:n2));

(6) 抽样积

n2 y?x(n)??12

n?n1 ★数字信号处理实验指导书★

MATLAB实现:

y = prod(x(n1:n2));

(7) 信号能量

?

E?|x(n)|2 n???MATLAB实现:

E = sum(abs(x).^2);

(8) 信号功率 1?P?|x(n)|2 Nn???MATLAB实现:

P = sum(abs(x).^2) / N;

??2.2离散系统表示与运算

一个离散时间系统,输入信号为x(n),输出信号为y(n),运算关系为T[ ]表示,则输出与输入的关系可以表示为y(n)=T[x(n)]. 1、 线性时不变系统(LTI)的表示

线性时不变系统的输入输出关系可通过单位脉冲响应h(n)表示为:

N

y(n)?x(n)?h(n)?x(k)h(n?k) k?0式中*表示卷积运算.

2、 线性时不变系统(LTI)的实现

可物理实现的线性时不变系统是稳定的、因果的。这种系统的单位脉冲响应是因果的且绝对可和的。即

h(n)=0 n<0

?

|h(n)|?? ?? 在MATLAB中可采用函数conv实现卷积运算,即: y=conv(x,h);

它默认序列从n=0开始。但如果序列是从一负值开始,即如: {x(n):nxb?n?nxe}

{h(n):nhb?n?nhe}

{y(n):nyb?n?nye}

其中nxb<0或nhb<0,或两者同时为负,这样就不能直接采用conv函数。通过分析,

?? 13

本文来源:https://www.bwwdw.com/article/jkut.html

Top