MATLAB连续时间基本信号的绘制 您所在的位置:网站首页 matlab生成指数信号 MATLAB连续时间基本信号的绘制

MATLAB连续时间基本信号的绘制

2023-10-11 22:57| 来源: 网络整理| 查看: 265

目录

1 复指数信号

1.1 复常数s虚部为0时的复指数信号

1.2 复常数s实部为0时的复指数信号

1.3  其他情况的复指数信号

2 单位阶跃信号

3 单位冲激信号

4 斜坡信号

5 门信号

6 三角信号

7 抽样信号

8 周期矩形脉冲信号

9 周期三角信号

1 复指数信号

        复指数信号的表达式可以表达为

{\color{Magenta} x\left ( t \right )=e^{st},-\propto t \propto} 

式中有                 {\color{Magenta} s = \sigma + j\omega}

所以有                {\color{Magenta} x(t)=e^{(\sigma +j\omega )t}=e^{\sigma t}e^{j\omega t}=e^{\sigma t}\cos (\omega t)+je^{\sigma t}\sin (\omega t)}

该信号的实部是{\color{Magenta} e^{\sigma t}\cos (\omega t)},虚部为{\color{Magenta} e^{\sigma t}\sin (\omega t)},模为{\color{Magenta} e^{\sigma t}},幅角为{\color{Magenta} \omega t}

        一个复指数可以分解成实数和虚数两部分,它们均是增长、衰减或等幅振荡的正弦信号,s的实部\sigma可以表示正弦信号的振幅随时间变化的情况,虚部\omega可以表示正弦信号的角频率

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的虚部\omega=0时复指数信号就变成了实指数信号,且当实部\sigma小于0时, 信号随时间衰减, 实部\sigma等于0时, 信号为直流信号, 实部\sigma大于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 单位阶跃信号

表达式:

{\color{Magenta} {u(t)=\left\{\begin{matrix} 1,t0\\ 0,t0 \end{matrix}\right.}}

三种产生单位阶跃信号的方法:

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)定义为:

{\color{Magenta} {\left\{\begin{matrix} \delta (t)=0, t\neq 0\\ \delta (t)=\propto ,t=0 \\\int_{-\infty }^{\infty }\delta (t)dt=1 \end{matrix}\right.}}

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 斜坡信号

        斜坡信号又被称为斜波信号,表达式为:

{\color{Magenta} r(t)=\left\{\begin{matrix} t,t\geqslant 0\\ 0,t0 \end{matrix}\right.}

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 门信号

        门信号也称为矩形脉冲信号,表达式如下:

{\color{Magenta} G_{\tau }(t)=\left\{\begin{matrix} 1,\left | t \right |\tau /2\\ 0,\left | t \right |\tau /2 \end{matrix}\right.}

        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 三角信号

        三角信号也被称为三角脉冲信号,表达式为:

{\color{Magenta} \Lambda _{\tau }(t)=\left\{\begin{matrix} 1-\frac{2\left | t \right |}{\tau } , \left | t \right |\leqslant \frac{\tau }{2}\\ 0,\left | t \right |\frac{\tau }{2} \end{matrix}\right.}

        三角函数在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 抽样信号

        抽样信号也称为采样信号,表达式为:

{\color{Magenta} Sa(t)=\frac{\sin t}{t}}

可以看出,当t=0时,信号最大,在正负两个方向逐渐衰减,在matlab中用sinc函数实现,即St=sinc(t) ,值得注意的是,这里的sinc(t)=\frac{\sin (\pi t)}{\pi 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');

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有