37 lines
990 B
Python
37 lines
990 B
Python
#!/usr/bin/env python3
|
|
|
|
from scipy import signal
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
|
|
|
|
def main():
|
|
fs = 6400.0
|
|
coeffs = signal.firls(63, (0, 1150, 1200, fs/2), (1, 1, 0, 0), fs=fs)
|
|
|
|
freq_space = np.linspace(-fs/2 / (fs/2)*np.pi, fs/2 / (fs/2)*np.pi, 512)
|
|
freqs, response = signal.freqz(coeffs, worN=freq_space)
|
|
response = 10 * np.log(abs(response))
|
|
plt.plot(fs/2*freqs/(np.pi), response)
|
|
plt.grid()
|
|
plt.show()
|
|
|
|
f0 = (1200 + 50) / fs
|
|
complex_coeffs = []
|
|
for n in range(0, len(coeffs)):
|
|
complex_coeffs += [coeffs[n] * np.exp(1j * 2 * np.pi * f0 * n)]
|
|
complex_coeffs = np.array(complex_coeffs)
|
|
|
|
print(complex_coeffs)
|
|
|
|
freq_space = np.linspace(-fs/2 / (fs/2)*np.pi, fs/2 / (fs/2)*np.pi, 512)
|
|
freqs, response = signal.freqz(complex_coeffs, worN=freq_space)
|
|
response = 10 * np.log(abs(response))
|
|
plt.plot(fs/2*freqs/(np.pi), response)
|
|
plt.grid()
|
|
plt.show()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main() |