1.1 基础知识回顾
1.1.1 信号的特征与分类
信号可以由一个或多个源产生。在前一种情况下,该信号为标量信号;而在后一种情况下,该信号为向量信号,通常也称为多通道信号。一维信号是单个自变量的函数,二维信号是两个自变量的函数,多维信号是多个自变量的函数。
在自变量的指定值上信号的值称为信号的振幅,作为自变量的函数的振幅变化称为波形。
对于一维信号,自变量通常为时间。若自变量是连续的,则该信号称为连续时间信号;若自变量是离散的,则称为离散时间信号。对于一维连续时间信号,连续自变量通常用t表示;而对于一维离散时间信号,离散自变量通常用n表示。
若用{v[n]}表示一个一维离散时间信号,则其中的每一个成员v[n]称为一个样本。在许多时候,离散时间信号是通过对原连续时间信号以相等的时间间隔抽样产生的。若定义离散时间信号的离散时刻是等间隔的,则离散自变量n可以被归一化,从而取为整数值。
具有连续振幅的连续时间信号通常称为模拟信号,如语音信号。用有限个数字表示离散振幅值的离散时间信号称为数字信号,如数字化的音乐信号。具有连续振幅值的离散时间信号称为抽样数据信号,这一类信号出现在开关电容(SC)电路中。数字信号可以看作是量化后的抽样数据信号。具有离散振值的连续时间信号称为量化矩形窗信号,该信号通常出现在数字电路中。
1.1.2 信号的基本运算
离散时间信号可以是一个有限长或无限长序列。有限长(也成为有限时宽或有限范围)序列仅定义在有限的时间间隔中:N1 ≤ n ≤ N2,其中 -∞ < N1 而 N2 < ∞ , N2 ≥ N1 。有限长序列的长度(或时宽)为 N = N2 - N1 + 1 。
满足
的序列称为周期为N的周期序列,其中N取任意正整数,K取任意整数。
序列x[n]的能量定义为
非周期序列x[n]的平均功率定义为
周期为N的周期序列的平均功率为
1.2 常用序列的产生
1.2.1 单位样本和单位阶跃序列
单位样本序列(通常称为离散时间冲激或单位冲激),用δ[n]表示,其定义为:
单位阶跃序列用μ[n]表示,其定义为:
使用MATLAB命令,可产生长度为N的单位样本序列μ[n]:
u = [1 zeros(1,N - 1)];
延时M个样本且长度为N的单位样本序列ud[n],可用如下MATLAB命令产生,其中M<N:
ud = [zeroS(1,M) 1 zeros(1,N - M - 1)];
产生延时单位阶跃序列的方法,类似于产生延时单位样本序列的方法。
% 一个单位样本序列的产生
clf;
% 产生从-10到20的一个向量
n = -10:20;
% 产生单位样本序列
u = [zeros(1,10) 1 zeros(1,20)];
stem(n,u)
xlabel('时间n');
ylabel('振幅');
title('单位样本序列');
axis([-10 20 0 1.2]);
1.2.2 指数信号
1. 指数序列由
给定。其中A和α可以是任意实数或任意复数,表示为
因此,指数信号x[n]可改写为
2. 指数序列可使用MATLAB运算符.^和exp产生。
% 生成一个复指数序列
clf;
c = -(1/12) + (pi/6)*i;
K = 2;
n = 0:40;
x = K*exp(c*n);
subplot(2,1,1);
stem(n,real(x)); % real:return the real part
xlabel('时间序号n');
ylabel('振幅');
title('实部')
subplot(2,1,2);
stem(n,imag(x)); % imag:return the imag part
xlabel('时间序号n');
ylabel('振幅');
title('虚部');
% 生成一个实指数序列
clf;
n = 0:35;
a = 1.2;
k = 0.2;
x = k*a.^n;
stem(n,x);
xlabel('时间序号n');
ylabel('振幅')
1.2.3 正弦序列
在MATLAB中,正弦序列可使用三角运算符cos和sin产生
% 正弦序列的产生
n = 0:40;
f = 0.1;
phase = 0;
A = 1.5;
arg = 2*pi*f*n - phase;
x = A*cos(arg);
clf;
stem(n,x) % 绘制产生的序列
axis([0 40 -2 2]) % 设置坐标值范围,即xmin = 0、xmax = 40、ymin = -2、ymax = 2
grid; % 切换改变主网格线的可见性
title('正弦序列');
xlabel('时间序号n');
ylabel('振幅');
axis;
1.2.4 随机信号
在区间(0,1)中均匀分布的长度为N的随机信号,可在MATLAB中通过如下命令产生:
同理,使用下面的MATLAB命令,可产生长度为N且只有零均值和单位方差的正态分布的随机信号x[n]:
1.2.5 方波和锯齿波信号
MATLAB函数square和sawtooth可分别产生方波序列和锯齿波序列。
% square()
% 基本语法:y = square(t,duty)
% 其中,参数t为时长,参数duty参数表示占空比,即在信号的一个周期中正值所占的百分比。
t = -2*pi/100:pi/1024:2*pi/100;
y = square(2*pi*30*t,50);
plot(t,y)
grid
ylim([-1.5 1.5]);
% sawtooth()
% y = sawtooth(t)
% y = sawtooth(t,width)
t = 0:0.1:20;
y = sawtooth(pi*t,0.5);
plot(t,y)