Wolfram Procesamiento de señales | Ejemplos a probar
Wolfram Procesamiento de señales | Ejemplos a probar
Edite y ejecute cualquier pieza de código haciendo clic dentro del código y presionando .
+
Procesamiento y análisis de señales. Capacidades completas de procesamiento de señales, estrechamente integradas con cálculo, estadísticas y aprendizaje automático, para estudiantes y profesionales en ingeniería, finanzas, medicina y más.
Filtro IIR Butterworth de paso bajo
Filtro IIR Butterworth de paso bajo
Cree el prototipo analógico de Butterworth de orden n=3 ω c T=1 |
In[]:=
T=1;=;n=3;=Tan;tf=ButterworthFilterModel[{n,},s]//TransferFunctionExpand//Chop
ω
c
π
6
Ω
c
2.
T
ω
c
2
Ω
c
Cree el filtro digital correspondiente mediante transformación bilineal: |
In[]:=
dtf=ToDiscreteTimeModel[tf,T,z]//Chop
Visualice la representación de Bode del filtro: |
In[]:=
BodePlotdtf,{0,π},
Filtrado de datos mediante un filtro IIR
Filtrado de datos mediante un filtro IIR
Cree una señal sinusoidal con ruido: |
In[]:=
sig=TableSinn,{n,0,127}+RandomReal[{-0.25,0.25},128];
3.π
128
Defina un filtro IIR Butterworth: |
In[]:=
dtf=
;
0.153903 3 (1.+z) -4.70766+19.0258z-26.6767 2 z 3 z |
1
Filtre la señal ruidosa: |
In[]:=
res=RecurrenceFilter[dtf,sig,Padding->None];ListPlot[{sig,res}]
Filtro FIR de paso bajo usando el método de las ventanas
Filtro FIR de paso bajo usando el método de las ventanas
Cree filtro de respuesta finita al impulso (FIR) de longitud L=17 ω c |
In[]:=
ω
c
π
6
ω
c
Aplique una ventana de Hann a la respuesta al impulso unitario: |
In[]:=
w=Array[HannWindow,L,{-0.5,0.5}];fir=wh
Muestre la respuesta de frecuencia del filtro resultante: |
In[]:=
PlotEvaluate[20Log10[Abs[ListFourierSequenceTransform[fir,ω]]]],{ω,0,π},
Filtrado de datos mediante un filtro FIR
Filtrado de datos mediante un filtro FIR
Cree una señal ruidosa: |
In[]:=
sig=Table[SquareWave[n/64],{n,0,127}]+RandomReal[{-0.25,0.25},128];
Cree un filtro FIR de paso bajo: |
In[]:=
fir=LeastSquaresFilterKernel[{"Lowpass",π/6},17]Array[HannWindow,17,{-0.5,0.5}];
Filtre la señal usando |
In[]:=
res=ListConvolve[fir,sig,9];ListPlot[{sig,res}]
Equivalentemente, filtre la señal usando la función |
In[]:=
ListPlot[{sig,LowpassFilter[sig,π/6,17,HannWindow,Padding->0]}]
Espectro de potencia de una señal DTMF
Espectro de potencia de una señal DTMF
Defina un par de frecuencias de marcación por tonos (DTMF) normalizadas (en radianes/muestra) para el dígito de tono de marcación 2: |
In[]:=
{fp,fs}={697,1336};{wp,ws}=fp,fs
2π
8000.
2π
8000.
Cree una señal de doble tono de aproximadamente 200 ms de duración: |
In[]:=
dtmf=Table[Sin[wpn]+Sin[wsn],{n,0,1799}]+RandomReal[{-0.25,0.25},1800];audio=AudioPad[Audio[dtmf,SampleRate8000],{0.02,0.02}]
Muestre el espectro de potencia: |
In[]:=
Periodogramaudio,
El método de Welch promedia espectros de potencia de particiones suavizadas y superpuestas: |
In[]:=
Periodogramaudio,600,300,BlackmanWindow,
Análisis de señales usando un espectrograma
Análisis de señales usando un espectrograma
Defina pares de frecuencias DTMF normalizadas (en radianes/muestra) para los dígitos de tono de marcación 9 a 1: |
In[]:=
freqs=#[[1]],#[[2]]&/@{{852,1447},{697,1209}}
2π
8000.
2π
8000.
Cree un clip de audio para la secuencia de doble tono: |
In[]:=
dtmf=(Table[Sin[#[[1]]n]+Sin[#[[2]]n],{n,0,1799}]+RandomReal[{-0.25,0.25},1800]&)/@freqs;audio=AudioJoin[AudioPad[Audio[#,SampleRate8000],{0.01,0.01}]&/@dtmf]
Revise el espectrograma: |
In[]:=
Spectrogramaudio,
Mejore la resolución de frecuencia aumentando la longitud del segmento: |
In[]:=
Spectrogramaudio,512,
Adicionalmente, mejore la resolución de tiempo aumentando la 0superposición entre segmentos: |
In[]:=
Spectrogramaudio,512,64,
Procesamiento de series temporales
Procesamiento de series temporales
Obtenga datos de temperatura diaria. Los datos tienen un período de muestreo de T=1 T=86400 sr= 1 86400 |
In[]:=
ts=TimeSeries;
Suavice los datos aplicando un filtro de paso bajo con una frecuencia de corte que aproxime un promedio semanal: |
In[]:=
sr=1/86400;DateListPlotts,LowpassFilterts,sr,15,
π
6
Adicionalmente, calcule y visualice al promedio mensual aproximado: |
In[]:=
DateListPlotts,LowpassFilterts,sr,15,LowpassFilterts,sr,65,
π
6
π
186