MATLAB信号处理之常用信号的表示(1)

今天先来分享几个常用的信号在MATLAB中的表示方法

1、普通离散时间信号

N=(-3:10);                           %定义N为离散的时间点
X=[0 2 3 3 2 3 0 -1 -2 -3 -4 -5 1 2];%定义每一个时间点的数值
stem(N,X)                            %绘制离散值图
axis([-4 12 -7 5])                   %限制图的横纵坐标的显示范围
xlabel('离散时间点');                 %给横坐标命名
ylabel('各时间点对应的信号的数值')     %给纵坐标命名
title('离散时间信号');                %给整个图形定义一个标题


2、单位采样序列(单位脉冲序列δ(n))

n=50;                            %定义采样序列的长度
x=zeros(1,n);                    %生成一个全0的向量x
x(1)=1;                          %把向量x的第一个数值重新赋值为1
xn=0:n-1;                        %定义绘图的横坐标变量
stem(xn,x);                      %绘制单位采样序列图
grid on;                         %显示网格线
axis([-2 51 0 1.1])              %限制图的横纵坐标的显示范围
xlabel('n');                     %给横坐标命名
ylabel('δ(n)');                  %给纵坐标命名
title('单位采样序列δ(n)');        %给整个图形定义一个标题


3、单位冲激信号

T=1000;
t=0:1/T:10;
t1=-5:1/T:5;
f1=stepfun(t1,-1/T)-stepfun(t1,1/T);
plot(t1,f1)
grid on
axis([-5 5 -1 2])


4、单位阶跃序列 u(n)

n=40;                            %定义阶跃序列的长度
x=ones(1,n);                     %生成一个全1的向量x
xn=0:n-1;                        %定义绘图的横坐标变量
stem(xn,x);                      %绘制单位阶跃序列图
grid on;                         %显示网格线
axis([-5 51 0 1.1])              %限制图的横纵坐标的显示范围
xlabel('n');                     %给横坐标命名
ylabel('u(n)');                  %给纵坐标命名
title('单位阶跃序列u(n)');        %给整个图形定义一个标题


5、单位阶跃信号

T=1000;
t1=-5:1/T:5;
f1=stepfun(t1,0);  %参数0代表没有进行移位的阶跃信号,若把0改为1,则相当于把原阶跃信号向右平移一个单位,以此类推
plot(t1,f1)
grid on
axis([-5 5 -1 2])


6、正弦序列

n=0:59;                          %定义序列自变量的变化范围
x=sin(pi/5*n);                   %生成一个正弦序列sin(n*pi/5)
stem(n,x);                       %绘制正弦序列图
grid on;                         %显示网格线
axis([-0 40 -1.5 1.5])           %限制图的横纵坐标的显示范围
xlabel('n');                     %给横坐标命名
ylabel('sin(n)');                %给纵坐标命名
title('正弦序列sin(n)');          %给整个图形定义一个标题


7、实指数序列x(n)=a^n

n=0:20;                            %定义序列自变量的变化范围
a1=1.6;a2=-1.6;a3=0.9;a4=-0.9;     %定义指数函数的底数
x1=a1.^n;                          %生成指数函数x1(n)=1.6^n
x2=a2.^n;                          %生成指数函数x1(n)=(-1.6)^n
x3=a3.^n;                          %生成指数函数x1(n)=0.9^n
x4=a4.^n;                          %生成指数函数x1(n)=(-0.9)^n
subplot(221)                       %开辟一个绘图区域
stem(n,x1,'fill');                 %绘制指数函数x1(n),'fill'表示每个数据点用实心来表示
grid on;                           %显示网格线
xlabel('n');                       %给横坐标命名
ylabel('x1(n)');                   %给纵坐标命名
title('x1(n)=1.6^n');              %给整个图形定义一个标题

subplot(222)                       %开辟一个绘图区域
stem(n,x2,'fill');                 %绘制指数函数x2(n),'fill'表示每个数据点用实心来表示
grid on;                           %显示网格线
xlabel('n');                       %给横坐标命名
ylabel('x2(n)');                   %给纵坐标命名
title('x2(n)=(-1.6)^n')          %给整个图形定义一个标题

subplot(223)                       %开辟一个绘图区域
stem(n,x3,'fill');                 %绘制指数函数x3(n),'fill'表示每个数据点用实心来表示
grid on;                           %显示网格线
xlabel('n');                       %给横坐标命名
ylabel('x3(n)');                   %给纵坐标命名
title('x3(n)=0.9^n');              %给整个图形定义一个标题

subplot(224)                       %开辟一个绘图区域
stem(n,x4,'fill');                 %绘制指数函数x4(n),'fill'表示每个数据点用实心来表示
grid on;                           %显示网格线
xlabel('n');                       %给横坐标命名
ylabel('x4(n)');                   %给纵坐标命名
title('x4(n)=(-0.9)^n')          %给整个图形定义一个标题


8、复指数序列 x(n)=e^((a+jw)*n)

n=0:50;                            %定义序列自变量的变化范围
A=3;a=-1/9;b=pi/5;                 %定义复指数函数的部分系数
x=A*exp((a+i*b)*n);                %生成一个复复指数函数
subplot(2,2,1)                     %开辟一个绘图区域
stem(n,real(x),'fill');            %绘制复指数函数的实部
grid on;                           %显示网格线
axis([0 30 -2 2]);                 %限制横纵坐标范围
xlabel('n');                       %给横坐标命名
ylabel('x(n)');                    %给纵坐标命名
title('实部')                      %给整个图形定义一个标题

subplot(2,2,2)                     %开辟一个绘图区域
stem(n,imag(x),'fill');            %绘制复指数函数的虚部
grid on;                           %显示网格线
axis([0 30 -2 2]);                 %限制横纵坐标范围
xlabel('n');                       %给横坐标命名
ylabel('x(n)');                    %给纵坐标命名
title('虚部');                     %给整个图形定义一个标题

subplot(2,2,3)                     %开辟一个绘图区域
stem(n,abs(x),'fill');             %绘制复指数函数的模
grid on;                           %显示网格线
axis([0 30 -2 2]);                 %限制横纵坐标范围
xlabel('n');                       %给横坐标命名
ylabel('x(n)');                    %给纵坐标命名
title('模');                       %给整个图形定义一个标题

subplot(2,2,4)                     %开辟一个绘图区域
stem(n,angle(x),'fill');           %绘制复指数函数的相角
grid on;                           %显示网格线
axis([0 30 -2 2]);                 %限制横纵坐标范围
xlabel('n');                       %给横坐标命名
ylabel('x(n)');                    %给纵坐标命名
title('相角');                     %给整个图形定义一个标题


9、单个矩形脉冲信号(非周期矩形波信号)

t=-4:0.001:4;                      %定义时间变量范围
T=2;                               %定义矩形波的脉宽
f=rectpuls(t,T);                   %生成一个矩形波信号
plot(t,f)                          %绘制矩形波图形
grid on;                           %显示网格线
axis([-4 4 -0.5 1.5])              %限制图的横纵坐标的显示范围
xlabel('t');                       %给横坐标命名
ylabel('f(t)');                    %给纵坐标命名
title('矩形波信号f(t)');            %给整个图形定义一个标题


10、单个三角脉冲信号(非周期锯齿波信号)

t=-3:0.001:3;            %定义时间变量
width=4;                 %定义三角波信号的宽度
A_x=0.5;                 %定义三角波信号最高点所对应的自变量的值,也即最大值为出现在距离对称点(width/2)*A_x处。
ft=tripuls(t,width,A_x); %生成三角波
plot(t,ft);              %绘grid on                  %显示网格线

注:上面两个用于产生单个矩形波或者三角波信号的函数,它们生成的信号都是关于原点对称的,并且信号幅值为1

猜你喜欢

转载自blog.csdn.net/qq_36554582/article/details/81660645