目录
1 复指数信号
复指数信号的表达式可以表达为
式中有
所以有
该信号的实部是,虚部为,模为,幅角为。
一个复指数可以分解成实数和虚数两部分,它们均是增长、衰减或等幅振荡的正弦信号,s的实部可以表示正弦信号的振幅随时间变化的情况,虚部可以表示正弦信号的角频率
1.1 复常数s虚部为0时的复指数信号
clc;clear;close all;
t = -3:0.01:3; %定义时域自变量
omega = 0; %虚部
sigma = [-1,0,1]; %实部
s = sigma + 1i * omega; %合成复常数
[s_matrix,t_matrix] = meshgrid(t,s); %将变量转换为矩阵模式,加快运算速度
xt = exp(s_matrix.*t_matrix); %生成连续时间复指数信号
subplot(3,1,1); %画布布局
plot(t,xt(1,:)); %绘图
xlabel('t'); %x轴标签
ylabel('x(t)'); %y轴标签
title('复指数信号:实部 = -1'); %标题
subplot(3,1,2);
plot(t,xt(2,:));
xlabel('t');
ylabel('x(t)');
title('复指数信号:实部 = 0');
subplot(3,1,3);
plot(t,xt(3,:));
xlabel('t');
ylabel('x(t)');
title('复指数信号:实部 = 1');
实验效果显示复常数s的虚部=0时复指数信号就变成了实指数信号,且当实部小于0时, 信号随时间衰减, 实部等于0时, 信号为直流信号, 实部大于0时, 信号随时间增长
1.2 复常数s实部为0时的复指数信号
clc;clear;close all;
t = -5:0.001:5; %定义时域自变量
omega1 = 5; %虚部
omega2 = 3;
sigma = 0; %实部
xt1= exp((sigma + 1i * omega1) * t); %产生复指数信号
xt2= exp((sigma + 1i * omega2) * t);
figure; %建立第1个画布
plot3(t,imag(xt1),real(xt1)); %绘制3维图
xlabel('t');ylabel('信号实部');zlabel('信号虚部');
figure; %建立第2个画布
subplot(2,1,1); %画布布局(两行一列)
plot3(t,imag(xt1),real(xt1)); %绘制3维图
xlabel('t');ylabel('信号实部');zlabel('信号虚部');
view([0 90]);title('只看实部');
subplot(2,1,2);
plot3(t,imag(xt1),real(xt1));
xlabel('t');ylabel('信号实部');zlabel('信号虚部');
view([0 0]);title('只看虚部');
figure %建立第3个画布
subplot(2,1,1);
plot(t,imag(xt1));
xlabel('t');
title('w=5,虚部信号');
subplot(2,1,2);
plot(t,imag(xt2));
xlabel('t');
title('w=3,虚部信号');
对比实部与虚部,发现只有初相位不同
在复常数实数为0时,信号是等幅振荡,通过对比不同角频率大小的信号,可以发现 角频率越大,信号振荡也越快
1.3 其他情况的复指数信号
clc;clear;close all;
t = -5:0.001:5; %时域自变量
omega = [10,10,10];
sigma = [-1,0,1];
s = sigma + 1i * omega; %合成复指数常数s
[s_matrix,t_matrix] = meshgrid(t,s); %变量转换为矩阵模式,提高运算速度
xt = exp(s_matrix.*t_matrix);
subplot(3,1,1);
plot(t,real(xt(1,:)));
xlabel('t');title('信号实部(\sigma=-1;\omega=10)');
subplot(3,1,2);
plot(t,real(xt(2,:)));
xlabel('t');title('信号实部(\sigma=0;\omega=10)');
subplot(3,1,3);
plot(t,real(xt(3,:)));
xlabel('t');title('信号实部(\sigma=1;\omega=10)');
可以看出,在复常数虚部一样时,复常数s实部小于0时, 信号为减幅振荡,复常数s实部等于0时, 信号为等幅振荡,复常数s实部大于0时, 信号为增幅振荡
2 单位阶跃信号
表达式:
三种产生单位阶跃信号的方法:
- xt = heaviside(t) %单位阶跃信号
- xt = stepfum(t,t0) %t0表示在t0处发生阶跃
- xt = t>=t0 %逻辑判断,在大于等于3时发生阶跃
clc;clear;close all;
t = -5:0.001:5;
xt1 = heaviside(t-2);
xt2 = stepfun(t,2);
xt3 = t>=2;
subplot(1,3,1);
plot(t,xt1);
ylim([-0.2,1.2]); %设置y轴范围
xlabel('t');
title('heaviside产生阶跃信号');
subplot(1,3,2);
plot(t,xt2);
ylim([-0.2,1.2]); %设置y轴范围
xlabel('t');
title('stepfun产生阶跃信号');
subplot(1,3,3);
plot(t,xt3);
ylim([-0.2,1.2]); %设置y轴范围
xlabel('t');
title('t>=2产生阶跃信号');
3 单位冲激信号
matlab中无法直接表示单位冲激信号,只能近似的把它看成宽度为dt(自变量抽样间隔),幅度为1/dt的矩形脉冲,单位冲激信号的狄拉克(Dirac)定义为:
clc;clear;close all;
dt = 0.001; %抽样间隔
t = -5:dt:5; %时域自变量
xt = zeros(size(t)); %信号取值初始化为0
idx = round((3-(-5))/dt)+1; %得到冲激时刻对应的样本序列
xt(idx)=1/dt; %对冲激时刻赋值
stairs(t,xt); %绘图
ylim([-100,1200]); %设置y轴范围
xlabel('t');
title('单位冲激函数');
4 斜坡信号
斜坡信号又被称为斜波信号,表达式为:
clc;clear;close all;
t = 0:0.01:5;
rt1 = t.*heaviside(t); %产生斜坡信号
rt2 = (t-3).*heaviside(t-3);
subplot(1,2,1);
plot(t,rt1);
title('r(t)');
xlabel('t');
axis equal; %横纵刻度等长
subplot(1,2,2);
plot(t,rt2);
title('r(t-3)');
xlabel('t');
axis equal; %横纵刻度等长
5 门信号
门信号也称为矩形脉冲信号,表达式如下:
matlab中可用rectpuls函数表示,即 xt=rectpuls(t,w),可产生幅度为1,宽度为w,关于t=0左右对称的门信号(w的默认值为1)
clc;clear;close all;
t = -5:0.001:5;
gt1 = 2*rectpuls(t,2);
gt2 = 2*rectpuls(t-1,2);
subplot(1,2,1);
plot(t,gt1);
xlabel('t');
title('2G_2(t)');
ylim([-0.1,2.1]);
subplot(1,2,2);
plot(t,gt2);
xlabel('t');
title('2G_2(t-1)');
ylim([-0.1,2.1]);
6 三角信号
三角信号也被称为三角脉冲信号,表达式为:
三角函数在matlab中用tripuls函数表示,即xt=tripuls(t,w,s),可以产生一个最大值为1,宽度为w,中心点在t=0,斜度为s的三角信号;s的范围在-1到1之间,表示最大值的横坐标在t=(w/2)*s处
clc;clear;close all;
t = -5:0.001:5;
xt1 = 2*tripuls(t,2,0);
xt2 = 2*tripuls(t,2,1);
xt3 = 2*tripuls(t,2,-1);
xt4 = 2*tripuls(t-1,2,0);
xt5 = 2*tripuls(t-1,2,1);
xt6 = 2*tripuls(t-1,2,-1);
subplot(2,3,1); %第1行第1列
plot(t,xt1);
xlabel('t');
subplot(2,3,2); %第1行第2列
plot(t,xt2);
xlabel('t');
subplot(2,3,3); %第1行第3列
plot(t,xt3);
xlabel('t');
subplot(2,3,4); %第2行第1列
plot(t,xt4);
xlabel('t');
subplot(2,3,5); %第2行第2列
plot(t,xt5);
xlabel('t');
subplot(2,3,6); %第2行第3列
plot(t,xt6);
xlabel('t');
7 抽样信号
抽样信号也称为采样信号,表达式为:
可以看出,当t=0时,信号最大,在正负两个方向逐渐衰减,在matlab中用sinc函数实现,即St=sinc(t) ,值得注意的是,这里的
clc;clear;close all;
t = -20:0.001:20;
st = sinc(t/pi); %产生抽样信号
plot(t,st,t,st.^2,'--'); %绘制Sa(t)和Sa^2(t)
legend('Sa(t)','Sa^2(t)'); %添加图例
ylim([-0.5,1.2]);
grid on; %添加网格线
可以看出,Sa^2(t)的衰减速度比Sa(t)快得多
8 周期矩形脉冲信号
在matlab中用square函数表示,即xt = square(t,duty) 可产生周期为2pi的矩形脉冲信号,duty表示占空比,取值范围为0-100,默认值50
clc;clear;close all;
t = -10:0.001:10;
duty = 40;
xt1 = square(t,duty); %T=2pi(默认情况)
xt2 = square(t*(2*pi)/10,duty); %T=10
subplot(2,1,1);
plot(t,xt1);
xlabel('t');
title('T=2PI,duty=40');
ylim([-1.1,1.1]);
subplot(2,1,2);
plot(t,xt2);
xlabel('t');
title('T=10,duty=40');
ylim([-1.1,1.1]);
9 周期三角信号
在matlab中用sawtooth函数表示,即xt=sawtooth(t,xmax),可以产生周期为2pi的三角信号,最小值-1,最大值1,xmax表示每个周期内最大值出现的位置,如在0~2pi的周期内,t在0~xmax*2pi之间从-1线性递增到1,在xmax*2pi~2pi之间从1线性递减到-1
clc;clear;close all;
t = -10:0.001:10;
xt1 = sawtooth(t,0.5); %T=2pi(默认值)
xt2 = sawtooth(t*(2*pi)/5,1); %T=5
subplot(1,2,1);
plot(t,xt1);
xlabel('t');
subplot(1,2,2);
plot(t,xt2);
xlabel('t');