信号与系统基础知识(一)
信号时域分析
常用信号的MATLAB表示
1、常用奇异信号表示
在MATLAB可视化绘图中,对于以 t t t为自变量的连续信号,在绘图时统一用plot函数;而对n对自变量的离散序列,在绘图时统一用stem函数。
(1)单位冲激信号
单位冲激函数
δ
(
t
)
\delta(t)
δ(t)的定义为:
单位冲激序列
δ
(
n
)
\delta(n)
δ(n)的定义为:
MATLAB中,单位冲激信号的直接实现为:
n=n1:dt:n2;x=(n==0);
例题1:
%% 单位冲激响应
t=-5:0.01:5;
y=(t==0);
subplot(1,2,1)
plot(t,y,'r');
n=-5:5;
x=(n==0);
subplot(1,2,2);
stem(n,x);
由于任意序列可以表示为单位冲激序列的移位加权和。如下函数可以实现产生单位冲激序列:
function [x,n] = delta(n1,n2,k)
%delta 产生冲激序列δ(n-k),其中n1<=n<=n2,n1<=k<=n2
if nargin ~=3
disp('输入不正确,输入参数要有三个!');
return;
elseif (k<n1) || (k>n2) || (n1>n2)
error('输入不正确,输入参数要应满足n1<=k<=n2!');
end
n=n1:n2;
x=((n-k)==0);
end
(2)单位阶跃信号
连续时间单位阶跃函数
u
(
t
)
u(t)
u(t)定义为:
离散时间单位阶跃信号
u
[
n
]
u[n]
u[n]定义为:
生成单位阶跃序列
u
(
n
−
n
0
)
u(n-n_0)
u(n−n0)
function [x,n] = stepseq(n1,n2,n0,delta)
%stepseq 产生序列u(n-n0),其中n1<=n<=n2,n1<=n0<=n2
if nargin~=4
disp('输入不正确,输入参数要有四个!');
return;
elseif (n0<n1) || (n0>n2) || (n1>n2)
error('输入不正确,输入参数要满足n1<=k<=n2!');
end
n=n1:delta:n2;
x=((n-n0)>=0);
end
值得注意的是,利用ones(1,N)来实现的单位阶跃序列并不是真正的单位阶跃序列,而是一个长度为N单位门函数序列, u [ n ] − u [ n − N ] u[n]-u[n-N] u[n]−u[n−N]。
(3)实指数信号 x ( n ) = a n x(n)=a^n x(n)=an
其中a为实数。当
∣
a
∣
<
1
|a|<1
∣a∣<1时,序列是收敛的,而当
∣
a
∣
>
1
|a|>1
∣a∣>1时,序列是发散的。
实指数信号的实现:
n=n1:dt:n2;x=a.^n;
例题2:
%% 实指数信号
subplot(1,2,2)
stem(n,x);
n=0:1:10;
a1=0.5;a2=-0.5;a3=1.2;a4=-1.2;
x1=a1.^n;x2=a2.^n;
x3=a3.^n;x4=a4.^n;
subplot(2,2,1),stem(n,x1);
title('实指数序列(0<a1<1)');
xlabel('n');ylabel('x1(n)');
subplot(2,2,2),stem(n,x2);
title('实指数序列(-1<a2<0)');
line([0,10],[0,0]);
xlabel('n');ylabel('x2(n)');
subplot(2,2,3),stem(n,x3);
title('实指数序列(1<a3)');
xlabel('n');ylabel('x3(n)');
subplot(2,2,4),stem(n,x4);
line([0,10],[0,0]);
title('实指数序列(a4<-1)');
xlabel('n');ylabel('x4(n)');
(4)复指数信号 x ( n ) = e ( σ + j ω 0 ) n x(n)=e^{(\sigma+j\omega_0)n} x(n)=e(σ+jω0)n
n=n1:n2;x=exp(delta+jw)*n;
例题3:
%% 复指数信号
n=0:10;
delta=-0.2;w0=0.7;
x=exp((delta+1j*w0)*n);
subplot(2,1,1)
stem(n,real(x));
line([0,10],[0,0]);
title('复指数序列');
ylabel('复指数序列的实部');
subplot(2,1,2)
stem(n,imag(x));
line([0,10],[0,0]);
ylabel('复指数序列的虚部');
xlabel('n');
(5)正(余)弦信号 x ( n ) = c o s ( ω n + θ ) x(n)=cos({\omega}n+\theta) x(n)=cos(ωn+θ)
n=n1:n2;x=cos(w*n+sita);
例题4:
%% 正(余)弦信号
n=0:10;
w0=pi/5;w1=pi/4;
x=sin(n*w0+w1);
stem(n,x);
title('正弦型序列');
line([0,10],[0,0]);
xlabel('n');ylabel('x(n)');
2、工具箱中的信号产生函数
函数名 | 功能 |
---|---|
sawtooth | 产生锯齿波或三角波信号 |
square | 产生方波信号 |
sinc | 产生sinc函数波形 |
chirp | 产生调频余弦信号 |
gauspuls | 产生高斯正弦脉冲信号 |
vco | 电压控制振荡器 |
pulstran | 产生冲激串 |
rectpuls | 产生非周期的方波信号 |
tripuls | 产生非周期三角波信号 |
diric | 产生Dirichlet或周期sinc函数 |
gmonopuls | 产生高斯单脉冲信号 |
(1)周期性三角波或锯齿波函数sawtooth
调用格式:
x=sawtooth(t,width);
功能:产生一个周期为
2
π
2\pi
2π、幅度在-1到+1之间的周期性三角波信号。其中width表示最大幅度出现的位置:即在一个周期内,信号从t=0到width
∗
2
π
*2\pi
∗2π的时,函数值从-1到+1线性增加,而从width*
2
π
2\pi
2π到
2
π
2\pi
2π,又是从+1到-1线性下降。width取值在0~1之间。
若x=sawtooth(
Ω
\Omega
Ωt,width),则对应的周期是
2
π
/
Ω
2\pi/\Omega
2π/Ω。
例题5:
td=1/100000;%td为时间间隔
t=0:td:1;
x1=sawtooth(2*pi*5*t,0);
x2=sawtooth(2*pi*5*t,1);
x3=sawtooth(2*pi*5*t,0.5);
subplot(3,1,1),plot(t,x1);
subplot(3,1,2),plot(t,x2);
subplot(3,1,3),plot(t,x3);
(2)非周期性三角波脉冲序列
调用格式:
x=tripuls(t,width,skew);
功能:产生一个最大幅度为1,宽度为width,斜率为skew的三角脉冲信号。该函数横坐标范围由向量t决定,其三角波形是以t=0为中心向左右各展开width/2的范围;斜率skew在-1到+1之间取值,它决定了最大幅度1所对应的横坐标位置:width/2*skew。
%% 非周期行三角波脉冲信号
t=-3:0.001:3;
x1=tripuls(t,4,0);
subplot(1,3,1)
plot(t,x1);
axis([-4,4,0,1]);
grid on
t=-6:0.001:6;
x2=tripuls(t,4,0.5);
subplot(1,3,2)
plot(t,x2);
axis([-4,4,0,1]);
grid on
x3=tripuls(t+2,4,0.5);
subplot(1,3,3)
plot(t,x3);
axis([-4,4,0,1]);
grid on
(3)周期性方波信号square
调用格式:
x=square(t,duty);
功能:产生一个周期为2
π
\pi
π、幅度为正负1周期性方波,其中duty表示占空比,即在信号的一个周期中政治所占的百分比。
例题5:
%% 周期方波信号
td=1/100000;
t=0:td:1;
x1=square(2*pi*40*t,25);
x2=square(2*pi*40*t,50);
x3=square(2*pi*40*t,75);
subplot(311)
plot(t,x1);
title('占空比25%');axis([0,0.2,-1.5,1.5]);
subplot(312)
plot(t,x2);
title('占空比50%');axis([0,0.2,-1.5,1.5]);
subplot(313)
plot(t,x3)
title('占空比75%');axis([0,0.2,-1.5,1.5]);
(4)非周期性矩形脉冲信号
调用格式:
x=rectpuls(t,width);
功能:产生一个幅度为1、宽度为width、以t=0为中心左右对称的矩形波信号。该函数横坐标范围由向量t决定,其矩形波形是以t=0为中心向左右各展开width/2的范围。width的默认值为1。
例题6:
%% 非周期性矩形脉冲信号
t=-4:0.0001:4;
T=4;
x1=2*rectpuls(t,T);
subplot(121)
plot(t,x1);
title('x(t)');axis([-4,6,0,2.2]);
x2=2*rectpuls(t-T/2,T);
subplot(122)
plot(t,x2);
title('t-T/2');axis([-4,6,0,2.2]);
(5)抽样信号
调用格式:
x=sinc(x);
功能:产生一个抽样函数,其值为x/sinx
例题7:
%% 抽样信号
t=-1:0.001:1;
y=sinc(2*pi*t);
plot(t,y);
xlabel('时间t');
ylabel('幅值(y)');
title('抽样信号');
参考文献
赵鸿图,茅艳. 通信原理MATLAB仿真教程. 人民邮电出版社,2010.