MATLAB函數freqz的使用

  (一)、它是數字濾波器的頻率響應(包括幅頻響應和相頻響應)

(二)、主要的形式:

  • [h,w] = freqz(b,a,n)
  • [h,w] = freqz(sos,n)
  • [h,w] = freqz(d,n)
  • [h,w] = freqz(___,n,'whole')
  • [h,f] = freqz(___,n,fs)
  • [h,f] = freqz(___,n,'whole',fs)
  • h = freqz(___,w)
  • h = freqz(___,f,fs)
  • freqz(___)

(三)、解釋:

  1. [h,w] = freqz(b,a,n)返回數字點濾波器的n點頻率響應向量h和相應的角頻率向量w,其中數字和分母多項式係數分別存儲在b和a中。
  2. [h,w] = freqz(sos,n)返回與二階部分矩陣sos相對應的n點複頻響應。
  3. [h,w] = freqz(d,n)返回數字濾波器d的n點複頻響應。注意:當知道濾波器的N個抽頭係數之後,可以用這個形式來求濾波器的幅頻和相頻響應,n如果不指定其默認值爲512,也就是返回值h,w的長度都是512點的
  4. [h,w] = freqz(___,n,'whole')返回整個單位圓周圍n個採樣點的頻率響應。
  5. [h,f] = freqz(___,n,fs)返回給定數字分子和分母多項式係數分別存儲在b和a中的數字濾波器的頻率響應矢量h和相應的物理頻率矢量f採樣率fs。
  6. [h,f] = freqz(___,n,'whole',fs)返回介於0和fs之間的n個點處的頻率。
  7. h = freqz(___,w)以w中提供的歸一化頻率返回頻率響應矢量h。
  8. h = freqz(___,f,fs)以f中提供的物理頻率返回頻率響應矢量h。
  9. 沒有輸出參數的freqz(___)繪製濾波器的頻率響應。

注意:如果freqz的輸入是單精度的,則頻率響應是使用單精度算法計算的。輸出h是單精度
(四)、輸入輸出相關參數解釋

  • 輸入:
  1. b,a:傳遞函數的係數向量
    傳遞函數係數,指定爲矢量。 用b和a表示傳遞函數


    例如:
    b = [1 3 3 1] / 6和a = [3 0 1 0] / 3指定具有標準化3-dB頻率0.5πrad /樣本的三階巴特沃斯濾波器。
    數據類型:double | 單
    複數支持:是
  2. n —評估點數
    512(默認)| 正整數標量
    指定爲不小於2的正整數標量的評估點數。如果不存在n,則默認爲512。爲獲得最佳結果,請將n設置爲大於過濾器階數的值。

    數據類型:雙精度

  3. sos —二階截面係數矩陣
    二階截面係數,指定爲矩陣。
    sos是一個K×6矩陣,其中部分數K必須大於或等於2。如果部分數小於2,freqz會將輸入視爲分子向量。 sos的每一行都對應一個二階(雙二階)濾波器的係數。 sos的第i行對應於[bi(1)bi(2)bi(3)ai(1)ai(2)ai(3)]。

    示例:s = [2 4 2 6 0 2; 3 3 0 6 0 0]指定具有標準化3-dB頻率0.5πrad /樣本的三階巴特沃斯濾波器。

    數據類型:double | 單
    複數支持:是

  4. d-數字濾波器
    digitalFilter對象
    數字濾波器,指定爲digitalFilter對象。 使用designfilt根據頻率響應規範生成數字濾波器。

    示例:d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5)指定具有標準化3-dB頻率0.5πrad /樣本的三階巴特沃斯濾波器。

  5. fs —採樣率
    正標量
    採樣率,指定爲正標量。 當時間單位爲秒時,fs以赫茲表示。

    數據類型:雙精度

  6. w —角頻率
    向量
    角頻率,指定爲向量,以弧度/樣本表示。 w必須至少包含兩個元素。 w =π對應於奈奎斯特頻率。

  7. f —頻率
    向量
    頻率,指定爲向量。 f必須至少包含兩個元素。 當時間單位爲秒時,f以赫茲表示。

    數據類型:雙精度
     

  • 輸出:
  1. h-頻率響應向量
    頻率響應,以向量形式返回。如果指定n,則h的長度爲n。如果您未指定n或將n指定爲空向量,則h的長度爲512。
  2. w —角頻率向量
    角頻率,作爲矢量返回。 w的取值範圍是0到π。如果在輸入中指定“ whole”,則w中的值範圍爲0到2π。如果指定n,則w的長度爲n。如果您未指定n或將n指定爲空向量,則w的長度爲512。
  3. f —頻率向量
    頻率,作爲以赫茲表示的向量返回。 f的取值範圍是0到fs / 2 Hz。如果在輸入中指定“ whole”,則f中的值範圍爲0到fs Hz。如果指定n,則f的長度爲n。如果您未指定n或將n指定爲空向量,則f的長度爲512。
  • 算法
    數字濾波器的頻率響應可以解釋爲在z =ejω[1]處評估的傳遞函數。
    freqz從您指定的(實數或複數)分子和分母多項式確定傳遞函數,並返回數字濾波器的複數頻率響應H(ejω)。在使用的語法確定的採樣點上評估頻率響應。
    當您不提供頻率向量作爲輸入參數時,freqz通常使用FFT算法來計算頻率響應。它將頻率響應計算爲變換後的分子和分母系數的比率,並用零填充到所需的長度。
    當您確實提供了一個頻率向量作爲輸入參數時,freqz使用霍納的嵌套多項式求值方法對每個頻率點處的多項式求值,將分子響應除以分母響應。

 

(五)使用舉例:

  1. 計算並顯示由以下傳遞函數描述的三階IIR低通濾波器的幅度響應:

    將分子和分母表示爲多項式卷積。 在整個單位圓上的2001個點處找到頻率響應。
    b0 = 0.05634;
    b1 = [1  1];
    b2 = [1 -1.0166 1];
    a1 = [1 -0.683];
    a2 = [1 -1.4461 0.7957];
    
    b = b0*conv(b1,b2);
    a = conv(a1,a2);
    
    [h,w] = freqz(b,a,'whole',2001);
    plot(w/pi,20*log10(abs(h)))
    ax = gca;
    ax.YLim = [-100 20];
    ax.XTick = 0:.5:2;
    xlabel('Normalized Frequency (\times\pi rad/sample)')
    ylabel('Magnitude (dB)')

     


  2.  
  3. 使用的Kaiser窗口設計80階FIR低通濾波器。 指定歸一化截止頻率rad / sample。
    顯示濾波器的幅度和相位響應。
    b = fir1(80,0.5,kaiser(81,8));
    freqz(b,1)


    用designfilt設計相同的濾波器,用fdatool繪製它的幅頻和相頻響應:
     

    d = designfilt('lowpassfir','FilterOrder',80, ...
                   'CutoffFrequency',0.5,'Window',{'kaiser',8});
    freqz(d)
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章