typestar

Transformadas de Fourier en Python

rfft para señales reales, fftfreq para el eje que lo vuelve legible.

import numpy as np
from scipy import fft

tasa = 500
t = np.arange(0, 2, 1 / tasa)
onda = 2 * np.sin(2 * np.pi * 7 * t) + np.sin(2 * np.pi * 40 * t)

espectro = fft.rfft(onda)
frecs = fft.rfftfreq(t.size, d=1 / tasa)
potencia = np.abs(espectro)

cimas = np.argsort(potencia)[::-1][:2]
print(sorted(frecs[cimas].round(1)))
print(round(float(potencia.max()), 1), espectro.dtype)
print(np.allclose(fft.irfft(espectro, n=t.size), onda))

Cómo funciona

  1. rfft devuelve medio espectro, que es todo lo que una señal real tiene.
  2. rfftfreq necesita el espaciado de muestreo para etiquetar los bins.
  3. El bin del pico es la frecuencia dominante.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
432
Tokens
165
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 90 segundos.

Escribe este fragmento

Paso 3 de 3 en Álgebra lineal y señales; paso 18 de 23 en Computación científica con SciPy.

← Anterior Siguiente →