Wolfram Signalverarbeitung | Zum Ausprobieren
Wolfram Signalverarbeitung | Zum Ausprobieren
Nehmen Sie Änderungen vor und führen Sie jeden Code aus, indem Sie in den Code klicken und die Tastenkombination drücken.
+
Signalverarbeitung & Analyse. Umfassende Signalverarbeitungsfunktionen, eng gebündelt mit leistungsstarker Berechnung, Statistik und maschinellem Lernen für Studierende und Fachleute in den Bereichen Technik, Finanzen, Medizin und mehr.
IIR-Butterworth-Tiefpassfilter
IIR-Butterworth-Tiefpassfilter
Erstellen Sie den analogen Butterworth-Prototyp der Ordnung 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
Erstellen Sie den entsprechenden digitalen Filter durch bilineare Transformation: |
In[]:=
dtf=ToDiscreteTimeModel[tf,T,z]//Chop
Visualisieren Sie das Bode-Diagramm des Filters: |
In[]:=
BodePlotdtf,{0,π},
Daten filtern mit einem IIR-Filter
Daten filtern mit einem IIR-Filter
Erzeugen Sie ein verrauschtes sinusförmiges Signal: |
In[]:=
sig=TableSinn,{n,0,127}+RandomReal[{-0.25,0.25},128];
3.π
128
Definieren Sie einen Butterworth-Filter mit unendlicher Impulsantwort: |
In[]:=
dtf=
;
0.153903 3 (1.+z) -4.70766+19.0258z-26.6767 2 z 3 z |
1
Filtern Sie das verrauschte Signal: |
In[]:=
res=RecurrenceFilter[dtf,sig,Padding->None];ListPlot[{sig,res}]
FIR-Tiefpassfilter mit der Fenstermethode
FIR-Tiefpassfilter mit der Fenstermethode
Erstellen Sie einen Filter der Länge L=17 ω c |
In[]:=
ω
c
π
6
ω
c
Wenden Sie ein Von-Hann-Fenster auf die Reaktion des Einheits-Abtastsystems an: |
In[]:=
w=Array[HannWindow,L,{-0.5,0.5}];fir=wh
Visualisieren Sie den Frequenzgang des resultierenden Filters: |
In[]:=
PlotEvaluate[20Log10[Abs[ListFourierSequenceTransform[fir,ω]]]],{ω,0,π},
Datenfilterung mit einem FIR-Filter
Datenfilterung mit einem FIR-Filter
Erzeugen Sie ein verrauschtes Signal: |
In[]:=
sig=Table[SquareWave[n/64],{n,0,127}]+RandomReal[{-0.25,0.25},128];
Erstellen Sie einen FIR-Tiefpassfilter: |
In[]:=
fir=LeastSquaresFilterKernel[{"Lowpass",π/6},17]Array[HannWindow,17,{-0.5,0.5}];
Filtern des Signals mit |
In[]:=
res=ListConvolve[fir,sig,9];ListPlot[{sig,res}]
Äquivalent dazu filtern Sie das Signal mit der Funktion |
In[]:=
ListPlot[{sig,LowpassFilter[sig,π/6,17,HannWindow,Padding->0]}]
Leistungsspektrum eines Mehrfrequenzsignals
Leistungsspektrum eines Mehrfrequenzsignals
Definieren Sie ein Paar Wählsignale in Doppelton-Mehrfrequenz (DTMF) (in Radiant/Abtastung) für die Wähltonziffer 2: |
In[]:=
{fp,fs}={697,1336};{wp,ws}=fp,fs
2π
8000.
2π
8000.
Erzeugen Sie ein Zweiton-Signal von etwa 200 ms Dauer: |
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}]
Visualisieren Sie das Leistungsspektrum: |
In[]:=
Periodogramaudio,
Bei der Welch-Methode werden die Leistungsspektren von geglätteten und überlappenden Partitionen gemittelt: |
In[]:=
Periodogramaudio,600,300,BlackmanWindow,
Signalanalyse mithilfe eines Spektrogramms
Signalanalyse mithilfe eines Spektrogramms
Definieren Sie Paare von Doppelton-Mehrfrequenzen (in Radiant/Abtastung) für die Wähltonziffern 9 und 1: |
In[]:=
freqs=#[[1]],#[[2]]&/@{{852,1447},{697,1209}}
2π
8000.
2π
8000.
Erstellen Sie einen Audioclip für die Doppeltonfolge: |
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]
Betrachten Sie das Spektrogramm: |
In[]:=
Spectrogramaudio,
Verbessern Sie die Frequenzauflösung, indem Sie die Segmentlänge erhöhen: |
In[]:=
Spectrogramaudio,512,
Verbessern Sie außerdem die zeitliche Auflösung, indem Sie die Überlappung zwischen den Segmenten erhöhen: |
In[]:=
Spectrogramaudio,512,64,
Zeitreihenverarbeitung
Zeitreihenverarbeitung
Beziehen Sie die täglichen Temperaturdaten. Die Daten haben eine Abtastperiode von T=1 T=86400 sr= 1 86400 |
In[]:=
ts=TimeSeries;
Glätten Sie die Daten durch Anwendung eines Tiefpassfilters mit einer Grenzfrequenz, die einem Wochendurchschnitt nahe kommt: |
In[]:=
sr=1/86400;DateListPlotts,LowpassFilterts,sr,15,
π
6
Berechnen und visualisieren Sie zusätzlich den ungefähren Monatsdurchschnitt: |
In[]:=
DateListPlotts,LowpassFilterts,sr,15,LowpassFilterts,sr,65,
π
6
π
186