Files
PRD_TU_MP550/signals/puls_1kHz.py
2025-02-12 09:19:28 +03:00

85 lines
1.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import numpy as np
from matplotlib import pyplot as plt
from scipy.io import wavfile
Fs = 120e6 # Частота дискретизации
A0 = 65535 # Амплитуда сигнала
tp = 100e-6 # Длина импульса
Tp = 1000e-6 + tp # Длина между импульсами
Np = 1 # Количество импульсов
Tr = Np*Tp
N_fft = 2**22
N=int(Tr*Fs)
nT=np.arange(N)/Fs
def signal(t):
s = np.zeros_like(t)
mask = (0 <= t) & (t <= tp)
s[mask] = A0
return s
def signal_pulse(t):
s = np.zeros_like(t)
for i in range(Np):
s += signal(t-i*Tp)
return s
def spectr(s, Fs, N_fft):
S = np.fft.fft(s, n=N_fft)
S_fft = S/Fs
S_Power = S**2/(N*Fs)
S_fft = np.abs(S_fft)
S_Power = np.abs(S_Power)
f_fft = np.fft.fftfreq(N_fft, d=1/Fs)
S_fft = np.fft.fftshift(S_fft)
S_Power = np.fft.fftshift(S_Power)
f_fft = np.fft.fftshift(f_fft)
return (S_fft, S_Power, f_fft)
S_sum = signal_pulse(nT)
S, Power, f = spectr(S_sum, Fs, N_fft)
S = 20*np.log(S)
Power = 10*np.log(Power)
S_sum_real = S_sum.real
S_sum_imag = S_sum.imag
S_complex = np.zeros(int(len(S_sum)*2))
S_complex [::2] = S_sum_real
S_complex [1::2] = S_sum_imag
S_complex = S_complex.astype('int16')
with open ('pulse.pcm', 'wb') as File:
File.write(S_complex)
plt.figure(1,figsize=(12, 8))
plt.subplot(3,1,1)
plt.plot(nT,S_sum)
plt.xlabel('nT, с')
plt.ylabel('S, В')
plt.grid()
plt.subplot(3,1,2)
plt.plot(f,S)
plt.xlabel('f, Гц')
plt.ylabel('$S_{dB}$, дБ')
plt.grid()
plt.subplot(3,1,3)
plt.plot(f,Power)
plt.xlabel('f, Гц')
plt.ylabel('$S_{dB}^{2}$, дБ')
plt.grid()
plt.tight_layout()
plt.show()