Wolfram 訊號處理 | 值得嘗試的事情
Wolfram 訊號處理 | 值得嘗試的事情
透過點擊程式碼內部並按下 可以編輯並執行任何程式碼.
+
訊號處理與分析。Wolfram 全面的訊號處理功能,與強大的微積分、統計和機器學習緊密結合,適合工程、金融、醫學等領域的學生和專業人士。
低通 IIR 巴特沃斯濾波器
低通 IIR 巴特沃斯濾波器
假設取樣週期為 T=1 n=3 ω c |
In[]:=
T=1;=;n=3;=Tan;tf=ButterworthFilterModel[{n,},s]//TransferFunctionExpand//Chop
ω
c
π
6
Ω
c
2.
T
ω
c
2
Ω
c
使用雙線性轉換建立相應的數位濾波器: |
In[]:=
dtf=ToDiscreteTimeModel[tf,T,z]//Chop
視覺化濾波器的波德圖: |
In[]:=
BodePlotdtf,{0,π},
使用 IIR 濾波器進行資料過濾
使用 IIR 濾波器進行資料過濾
創建一個雜訊的正弦波訊號: |
In[]:=
sig=TableSinn,{n,0,127}+RandomReal[{-0.25,0.25},128];
3.π
128
定義 IIR 巴特沃斯濾波器: |
In[]:=
dtf=
;
0.153903 3 (1.+z) -4.70766+19.0258z-26.6767 2 z 3 z |
1
濾除雜訊訊號: |
In[]:=
res=RecurrenceFilter[dtf,sig,Padding->None];ListPlot[{sig,res}]
採用視窗方法的低通 FIR 濾波器
採用視窗方法的低通 FIR 濾波器
建立一個長度為 L=17 ω c |
In[]:=
ω
c
π
6
ω
c
將韓恩視窗套用至單位樣本響應: |
In[]:=
w=Array[HannWindow,L,{-0.5,0.5}];fir=wh
顯示結果濾波器的頻率響應: |
In[]:=
PlotEvaluate[20Log10[Abs[ListFourierSequenceTransform[fir,ω]]]],{ω,0,π},
使用 FIR 濾波器進行資料過濾
使用 FIR 濾波器進行資料過濾
建立雜訊訊號: |
In[]:=
sig=Table[SquareWave[n/64],{n,0,127}]+RandomReal[{-0.25,0.25},128];
建立低通 FIR 濾波器: |
In[]:=
fir=LeastSquaresFilterKernel[{"Lowpass",π/6},17]Array[HannWindow,17,{-0.5,0.5}];
使用 |
In[]:=
res=ListConvolve[fir,sig,9];ListPlot[{sig,res}]
等同於使用 |
In[]:=
ListPlot[{sig,LowpassFilter[sig,π/6,17,HannWindow,Padding->0]}]
DTMF 訊號的功率譜
DTMF 訊號的功率譜
為撥號音數位 2 定義一對雙音多頻 (DTMF) 標準化頻率(以弧度/樣本為單位): |
In[]:=
{fp,fs}={697,1336};{wp,ws}=fp,fs
2π
8000.
2π
8000.
建立持續時間約為 200 毫秒的雙音訊號: |
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}]
顯示功率譜: |
In[]:=
Periodogramaudio,
威爾屈的方法是將平滑和重疊分區的功率譜平均化: |
In[]:=
Periodogramaudio,600,300,BlackmanWindow,
使用頻譜圖進行訊號分析
使用頻譜圖進行訊號分析
為撥號音數位 9 和 1 定義成對的 DTMF 標準化頻率(以弧度/樣本為單位): |
In[]:=
freqs=#[[1]],#[[2]]&/@{{852,1447},{697,1209}}
2π
8000.
2π
8000.
為雙音序列建立音頻剪輯: |
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]
檢視頻譜圖: |
In[]:=
Spectrogramaudio,
透過增加分段長度來改善頻率解析度: |
In[]:=
Spectrogramaudio,512,
此外,透過增加區段間的重疊來改善時間解析度: |
In[]:=
Spectrogramaudio,512,64,
時間序列處理
時間序列處理
取得每日溫度資料。資料的取樣週期為 T=1 T=86400 sr= 1 86400 |
In[]:=
ts=TimeSeries;
使用截止頻率接近每周平均值的低通濾波器來平滑資料: |
In[]:=
sr=1/86400;DateListPlotts,LowpassFilterts,sr,15,
π
6
此外,計算每月的近似平均值並將其視覺化: |
In[]:=
DateListPlotts,LowpassFilterts,sr,15,LowpassFilterts,sr,65,
π
6
π
186