Volviendo al CSC
parent
409d683519
commit
7e601c3d09
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,55 @@
|
||||
def Cargar_datos_y_señal(Link):
|
||||
Datos = scipy.io.loadmat(Link)
|
||||
|
||||
Datos_Complejos = Datos['radar_I'] + 1j* Datos['radar_Q']
|
||||
|
||||
fase = Obtener_angulos(Datos_Complejos)
|
||||
fase = fase - np.mean(fase)
|
||||
|
||||
return Datos, fase
|
||||
|
||||
def Obtener_angulos(Datos):
|
||||
|
||||
Resultado = np.zeros(len(Datos))
|
||||
Desfasaje = 0
|
||||
for i in range(len(Resultado)):
|
||||
|
||||
### Siempre cargo el primer caso sin importar que
|
||||
if i == 0:
|
||||
Angulo = np.angle(Datos[0,0])
|
||||
Resultado[0] = Angulo
|
||||
continue
|
||||
|
||||
### Calculo el angulo del dato
|
||||
Angulo_anterior = Angulo
|
||||
Angulo = np.angle(Datos[i])
|
||||
|
||||
if np.sign(Angulo_anterior) != np.sign(Angulo) and np.abs(Angulo) > 2:
|
||||
Desfasaje += np.sum(np.pi * (-2)* np.sign(Angulo))
|
||||
|
||||
Resultado[i] = Desfasaje + Angulo[0]
|
||||
|
||||
return Resultado
|
||||
|
||||
def Resampleo_de_la_señal(Señal, frecuencia_original, nueva_frecuencia):
|
||||
|
||||
Señal = np.ravel(Señal) # asegurar que es 1D
|
||||
|
||||
### Genero el filtro pasabajos para luego hacer el resampling
|
||||
fc = 2.0 # Frecuencia de corte pasa-bajos [Hz]
|
||||
numtaps = 40 # Orden del filtro FIR (más grande = transición más suave)
|
||||
|
||||
nyq = fs / 2.0
|
||||
b = firwin(numtaps, fc / nyq) # Filtro FIR pasa-bajo lineal-fase
|
||||
Señal_filt = lfilter(b, 1.0, Señal)
|
||||
|
||||
### Busco el resampling rate y lo implemento
|
||||
|
||||
#M = int(np.floor(fs / (4*fc))) # margen de seguridad del 25%
|
||||
M = int(np.floor(frecuencia_original/(2*nueva_frecuencia)))
|
||||
M = max(1, M) # evitar M=0
|
||||
|
||||
Señal_dec = resample_poly(Señal_filt, up=1, down=M)
|
||||
fs_new = fs / M
|
||||
|
||||
return Señal_dec, fs_new
|
||||
Binary file not shown.
Loading…
Reference in New Issue