## 🧩 LIBRERÍAS IMPRESCINDIBLES
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from scipy.signal import find_peaks, spectrogram
```
---
## 🎵 GENERACIÓN DE SEÑALES
```python
t = np.linspace(0, 1, 1000) # 1000 muestras en 1s
x = np.sin(2 * np.pi * 50 * t) # Senoidal 50Hz
```
---
## ⚛️ FFT y ANÁLISIS FRECUENCIAL
```python
X = np.fft.fft(x)
frequencies = np.fft.fftfreq(len(x), Ts)
plt.plot(frequencies, np.abs(X))
```
### Aplicar ventana antes de la FFT
```python
x_win = x * np.hamming(len(x))
```
---
## 🔍 ESPECTROGRAMA
```python
f, t, Sxx = spectrogram(x, fs=1000)
plt.pcolormesh(t, f, 10 * np.log10(Sxx))
plt.ylabel('Frecuencia [Hz]')
plt.xlabel('Tiempo [s]')
```
---
## 🧮 AUTOCORRELACIÓN Y CORRELACIÓN CRUZADA
```python
Rx = np.correlate(x, x, mode='full') # Auto
Rxy = np.correlate(x, y, mode='full') # Cruzada
```
---
## 📊 CONVOLUCIÓN
```python
y = np.convolve(x, h, mode='same') # 'same', 'full', 'valid'
```
---
## 🎯 DISEÑO DE FILTROS FIR
```python
# Filtro paso bajo
h_lp = signal.firwin(101, cutoff=0.3)
# Filtro paso banda
h_pb = signal.firwin(101, cutoff=[0.2, 0.5], pass_zero=False)
y = signal.lfilter(h_lp, 1.0, x)
```
---
## 🔁 FILTRO ADAPTATIVO LMS (ESENCIAL)
```python
mu = 0.01
M = 10
w = np.zeros(M)
for n in range(M, len(x)):
u = x[n-M:n][::-1]
y[n] = np.dot(w, u)
e[n] = d[n] - y[n]
w += mu * e[n] * u
```
---
## 📐 ENERGÍA Y POTENCIA
```python
energia = np.sum(x**2)
potencia = np.mean(x**2)
```
---
## 🔎 DETECCIÓN DE PICOS
```python
peaks, _ = find_peaks(x, height=0.5)
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
```
---
## ✂️ SEGMENTACIÓN
```python
L = 256
S = 128
segmentos = [x[i:i+L] for i in range(0, len(x)-L+1, S)]
```
---
## 🪟 VENTANAS
```python
np.hamming(N)
np.blackman(N)
np.ones(N) / N # media móvil
```
---
## 🔁 MUESTREO Y RECONSTRUCCIÓN
```python
x_sub = x[::M] # Submuestreo
x_rec = signal.resample(x_sub, len(x)) # Reconstrucción
```
---
## ⚙️ NORMALIZACIÓN
```python
x = x / np.max(np.abs(x)) # Escala entre -1 y 1
```
---
## 🔉 RUIDO
```python
ruido_blanco = np.random.normal(0, 1, len(x))
```
---
## 🛠 FUNCIONES BÁSICAS
```python
np.mean(x), np.std(x), np.max(x), np.min(x)
np.linspace(), np.arange()
```
---
Copyright © 2025 REMONSOT - Todos los derechos reservados.