REMONSOT

REMONSOT REMONSOT REMONSOT
  • Home
  • Casos Reales
  • Contacto
  • BLOG
  • Más
    • Home
    • Casos Reales
    • Contacto
    • BLOG

REMONSOT

REMONSOT REMONSOT REMONSOT
  • Home
  • Casos Reales
  • Contacto
  • BLOG

OPERACIONES CON SEÑALES DIGITALES

## 🧩 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.

  • Privacy Policy
  • Terms and Conditions

Con tecnología de

Este sitio web utiliza cookies

Usamos cookies para analizar el tráfico del sitio web y optimizar tu experiencia en el sitio. Al aceptar nuestro uso de cookies, tus datos se agruparán con los datos de todos los demás usuarios.

RechazarAceptar