今天先来分享几个常用的信号在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('离散时间信号'); %给整个图形定义一个标题
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)'); %给整个图形定义一个标题
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])
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)'); %给整个图形定义一个标题
T=1000;
t1=-5:1/T:5;
f1=stepfun(t1,0); %参数0代表没有进行移位的阶跃信号,若把0改为1,则相当于把原阶跃信号向右平移一个单位,以此类推
plot(t1,f1)
grid on
axis([-5 5 -1 2])
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)'); %给整个图形定义一个标题
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') %给整个图形定义一个标题
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('相角'); %给整个图形定义一个标题
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)'); %给整个图形定义一个标题
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