通信原理仿真(四)——信号与系统基础(一)

信号时域分析

常用信号的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(nn0)

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[nN]

(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.

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值