1.学会利用matlab表示常用的信号,观察其波形和特性
2.学会利用matlab进行常用的平移,相乘,相加,反转,尺度变换等运算
例一:代码如下:
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0, 3, 0.01)
ft = 2 * np.exp(-1.5 * t)
plt.plot(t, ft, linewidth=2)
# 该语句是显示表格
plt.grid(True)
# 设置表格的x,y的坐标的范围
plt.axis([0, 3, 0, 2.5])
# 设置x,y的标签
plt.xlabel("t(sec)")
plt.title("单边衰减指数信号")
# 显示最后的表格
plt.show()
运行结果如下:
例二:
代码如下:
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0, 3, 0.01)
ft = 2*np.sin(2*np.pi*t+np.pi/4)
plt.plot(t, ft, linewidth=2)
# 该语句是显示表格
plt.grid(True)
# 设置表格的x,y的坐标的范围
plt.axis([0, 3, -2.5, 2.5])
# 设置x,y的标签
plt.xlabel("t(秒)")
plt.title("正弦信号")
# 显示最后的表格
plt.show()
运行结果如下:
例三:
代码如下:
import numpy as np
import matplotlib.pyplot as plt
from numpy import real, imag, angle, abs
t = np.arange(0, 3, 0.01)
ft = 2 * np.exp((-1.5 + 10j) * t)
plt.subplot(2, 2, 1)
plt.plot(t, real(ft), linewidth=2)
plt.title("实部")
plt.grid(True)
plt.axis([0, 3, -2, 2])
plt.subplot(2, 2, 2)
plt.plot(t, imag(ft), linewidth=2)
plt.title("虚部")
plt.grid(True)
plt.axis([0, 3, -2, 2])
plt.subplot(2, 2, 3)
plt.plot(t, abs(ft), linewidth=2)
plt.title("模")
plt.grid(True)
plt.axis([0, 3, 0, 2])
plt.subplot(2, 2, 4)
plt.plot(t, angle(ft, deg=True), linewidth=2)
plt.title("相角(度)")
plt.grid(True)
plt.axis([0, 3, -200, 200])
plt.show()
运行结果如下:
例四:代码如下:
import numpy as np
import matplotlib.pyplot as plt
def ucT(t):
return (t >= 0).astype(float)
t = np.arange(-1, 5, 0.001)
ft = ucT(t)
plt.plot(t, ft, linewidth=2)
plt.grid(True)
plt.axis([-1, 5, -0.5, 1.5])
plt.title("单位阶跃信号")
plt.xlabel("t(sec)")
plt.show()
运行结果如下:
例5:在上面的例子进行修改就可以变成一个门函数
代码 如下:
import numpy as np
import matplotlib.pyplot as plt
def ucT(t):
return (t >= 0).astype(float)
t = np.arange(-2, 2, 0.001)
ft = ucT(t+0.5)-ucT(t-0.5)
plt.plot(t, ft, linewidth=2)
plt.grid(True)
plt.axis([-1.5, 1.5, -0.5, 1.5])
plt.title('单位阶跃信号')
plt.xlabel("t(sec)")
plt.show()
运行结果如下:
例6:
信号的运算
代码如下:
import numpy as np
import matplotlib.pyplot as plt
f = 1
t = np.arange(0, 3, 0.01)
f1 = np.sin(2*np.pi*f*t)
f2 = np.sin(2*np.pi*f*t*8)
plt.subplot(2, 2, 1)
plt.plot(t, f1, linewidth=2)
plt.plot(t, f1+f2, linewidth=2)
plt.grid(True)
# 加一个辨识性的标签
plt.legend('f1', 'f1+f2')
plt.title('f1+f2')
plt.xlabel('t')
plt.axis([0, 3, -2, 2])
plt.subplot(2, 2, 2)
plt.plot(t, f1, linewidth=2)
plt.plot( t, f1*f2,linewidth=2)
plt.grid(True)
# 加一个辨识性的标签
plt.legend('f1', 'f1*f2')
plt.title('f1*f2')
plt.xlabel('t')
plt.axis([0, 3, -2, 2])
plt.show()
运行结果如下:
例7:
代码如下:
import numpy as np
import matplotlib.pyplot as plt
def ucT(t):
return (t >= 0).astype(float)
def f(t):
return ucT(t + 2) - ucT(t) + (-t + 1) * (ucT(t) - ucT(t - 1))
t = np.arange(-2, 4, 0.001)
ft1 = f(t - 2)
ft2 = f(3 * t)
ft3 = f(-t)
ft4 = f(-3 * t - 2)
plt.subplot(2, 2, 1)
plt.plot(t, ft1, linewidth=2)
plt.xlabel("t")
plt.title('f(t-2)')
plt.grid(True)
plt.axis([-2, 4, -0.5, 2])
plt.subplot(2, 2, 2)
plt.plot(t, ft2, linewidth=2)
plt.xlabel("t")
plt.title('f(3*t)')
plt.grid(True)
plt.axis([-2, 4, -0.5, 2])
plt.subplot(2, 2, 3)
plt.plot(t, ft3, linewidth=2)
plt.xlabel("t")
plt.title('f(-t)')
plt.grid(True)
plt.axis([-2, 4, -0.5, 2])
plt.subplot(2, 2, 4)
plt.plot(t, ft4, linewidth=2)
plt.xlabel("t")
plt.title('f(-3*t-2)')
plt.grid(True)
plt.axis([-2, 4, -0.5, 2])
plt.show()
运行结果如下:
思考题:
为了避免麻烦,全部画在一张图里
代码如下:
import numpy as np
import matplotlib.pyplot as plt
def ucT(t):
return (t >= 0).astype(float)
# 这个是实现阶跃函数,bool转变为float
t = np.arange(-2, 6, 0.01) # 调整时间范围和步长
f1 = (2 - np.exp(-2 * t)) * ucT(t)
f2 = np.cos((np.pi * t) / 2) * (ucT(t) - ucT(t - 4))
f3 = np.exp(t) * np.cos(t) * ucT(t)
plt.subplot(2, 2, 1)
plt.plot(t, f1, linewidth=2)
plt.title("f1(t)")
plt.xlabel("t")
plt.grid(True)
plt.axis([-2, 6, -0.5, 2])
plt.subplot(2, 2, 2)
plt.plot(t, f2, linewidth=2)
plt.title("f2(t)")
plt.xlabel("t")
plt.grid(True)
plt.axis([-2, 6, -1.5, 1.5])
plt.subplot(2, 2, 3)
plt.plot(t, f3, linewidth=2)
plt.title("f3(t)")
plt.xlabel("t")
plt.grid(True)
plt.axis([-2, 6, -1, 2])
plt.show()
运行结果如下:
下一道题:
首先要创建f(t)函数:
def f(t):
return 2 * ucT(t) - ucT(t - 1) - ucT(t - 2)
测试效果如下:
完整代码如下:
import numpy as np
import matplotlib.pyplot as plt
def ucT(t):
return (t >= 0).astype(float)
def f(t):
return 2 * ucT(t) - ucT(t - 1) - ucT(t - 2)
t = np.arange(-2, 6, 0.001)
f1t = f(-t)
f2t = f(t-2)
f3t = f(0.5*t+1)
plt.subplot(2, 2, 1)
plt.plot(t, f1t, linewidth=2)
plt.title("f1(t)")
plt.xlabel("t")
plt.grid(True)
plt.axis([-2, 6, -1, 3])
plt.subplot(2, 2, 2)
plt.plot(t, f2t, linewidth=2)
plt.title("f2(t)")
plt.xlabel("t")
plt.grid(True)
plt.axis([-2, 6, -1, 3])
plt.subplot(2, 2, 3)
plt.plot(t, f3t, linewidth=2)
plt.title("f3(t)")
plt.xlabel("t")
plt.grid(True)
plt.axis([-2, 6, -1, 3])
plt.show()
测试效果如下:
如有错误请指出,谢谢!