近来学习信号分析与处理的内容,尝试用MATLAB语言和Python语言两种方法实现信号的处理,不足之处,请多指教。
1、指数信号
MATLAB中用exp函数表示,调用格式为:
ft=A*exp(a*t)
Python中表示方法类似,同样用exp函数。
MATLAB代码:
% 指数信号 %
A = 1;a = -0.6;
t = -10:0.01:10; %定义时间点
ft = A*exp(a*t); %计算这些点的函数值
plot(t,ft); %画图命令
grid on; %设置网格
Python代码:
"""
指数信号
"""
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-10.0,10.0,1000) #通过linspace函数指定t的取值范围
plt.ylim(0,5) #定义纵轴取值范围
plt.subplot(221) #显示的位置
plt.title(u'exp(-0.6*t)') #图名
ft = np.exp(-0.6*t) #调用exp函数计算指数信号
plt.plot(t,ft) #绘图
plt.subplot(222)
plt.title(u'exp(0.6*t)')
ft1 = np.exp(0.6*t)
plt.plot(t,ft1)
plt.subplot(212)
plt.title(u'exp(0*t)')
ft2 = np.exp(0*t)
plt.plot(t,ft2)
plt.show()
运行结果:
2、抽样信号
定义:Sa(t)=sin(t)/t
MATLAB中用sinc函数表示,调用格式为:
ft=sinc(t/pi)
Python中也用sinc函数表示,调用与上相似。
MATLAB代码:
t = -5*pi:pi/100:5*pi; %t的取值范围
ft = sinc(t/pi); %调用函数计算
plot(t,ft);
axis([-10,10,-0.5,1.2]); %定义画图范围,横轴,纵轴
title('抽样信号') %图名
Python代码:
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-5.0 * np.pi,5.0*np.pi,1000) #通过linspace函数指定t的取值范围
ft = np.sinc(t/np.pi) #调用sinc函数计算抽样信号
plt.ylim(-0.5,1.2) #定义纵轴取值范围
plt.plot(t,ft) #绘图
plt.title(u'抽样信号') #图名
plt.show() #显示
3、正弦信号
在MATLAB中用sin函数表示,调用格式为:
ft=A*sin(w*t+phi)
在Python中也用sin函数表示,调用格式与上类似。
MATLAB代码:
% 正弦信号 %
A = 5; w = 0.5*pi; phi = 0;
t = 0:0.01:12;
ft = A*sin(w*t+phi);
plot(t,ft);
title('正弦信号5sin(pi/2)t');
Python代码:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import math
N = 500
t = np.linspace(0,12,num=N)
# w = pi/2
fs = 0.25
x1 = 5 * np.sin(2 * math.pi * fs * t)
plt.subplot(221)
plt.plot(t,x1)
plt.title(u'3sin(pi/2)t')
plt.ylim(-5.0,5.0)
# w = pi
fs = 0.5
x2 = 5 * np.sin(2 * math.pi * fs * t)
plt.subplot(222)
plt.plot(t,x2)
plt.title(u'3sin(pi*t)')
plt.ylim(-5.0,5.0)
# w = 3pi/2
fs = 0.75
x3 = 5 * np.sin(2 * math.pi * fs * t)
plt.subplot(212)
plt.plot(t,x3)
plt.title(u'3sin(3pi/2)*t')
plt.ylim(-5.0,5.0)
plt.show()