基于python的 math 和 numpy 模块,我们可以产生各种各样的信号。至此就举几个简单的小例子。
def triangle_wave(size, T): # size:采样点个数,T: 采样周期
t = np.linspace(-1, 1, size, endpoint=False)
y = np.abs(t)
y = np.tile(y, T) - 0.5
x = np.linspace(0, 2*np.pi*T, size*T, endpoint=False)
return x, y
def sawtooth_wave(size, T):
t = np.linspace(-1, 1, size)
y = np.tile(t, T)
x = np.linspace(0, 2*np.pi*T, size*T, endpoint=False)
return x, y
使用x, y = triangle_wave(20, 5)
产生波形。绘制图形效果如下:
同样可以利用 numpy 内部函数进行信号好的频谱分析:
参考:f = np.fft.fft(y)
绘图可得如下图形:
同样可以对 f 进行信号恢复,只要利用yy=np.fft.ifft(f)
即可。效果图小伙伴们可以自己尝试一下。看下时候完全恢复了。
该部分也很简单,顾名思义就是将两段信号进行相加。在此,直接贴出代码,小伙伴们简单分析一下就出来了。
x = np.linspace(0, 2*np.pi, 16, endpoint=False)
y = np.sin(2*x) + np.sin(3*x + np.pi/4)
其他类型的信号,小伙伴们可以参考进行编写,同时也可以利用音频来产生或者接受各种各样的信号。
下一部分就开始正题,开始共同探讨基于Matlab的滤波器的设计以及FPGA上的设计实现。