日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 小麥大叔
[導讀]預備知識 關(guān)于電容 HPF的推導 simulink 仿真 simulink 運行結(jié)果 matlab 實現(xiàn) matlab 運行結(jié)果 C語言實現(xiàn) 預備知識 高通濾波器(HPF-high pass filter)可以濾除頻率低于截止頻率的信號,類似的還有低通濾波器,帶通濾波器,帶阻濾波器。一階RC高通濾波器的電


  • 預備知識

    • 關(guān)于電容

    • HPF的推導

  • simulink 仿真

  • simulink 運行結(jié)果

  • matlab 實現(xiàn)

  • matlab 運行結(jié)果

  • C語言實現(xiàn)


預備知識

高通濾波器(HPF-high pass filter)可以濾除頻率低于截止頻率的信號,類似的還有低通濾波器,帶通濾波器,帶阻濾波器。一階RC高通濾波器的電路如下圖所示;

關(guān)于電容

首先對電容的幾個公式做一下補充;電容大小 滿足;

其中 是電容所帶的電荷量, 是電容兩端的電勢差;另外,電流相當于單位時間流過導體的電荷量;因此電流 滿足;

根據(jù)①,②可以得到電容大小 和電容的電流 以及兩端電壓 的關(guān)系;

HPF的推導

由以上電路可知,假設(shè)電流為 ,則可知

電容兩端的電壓為 根據(jù)基爾霍夫定律,滿足;

所以結(jié)合①,③,④可以得到;

根據(jù) ③,④,⑤ 可以得到以下關(guān)系;

將方程進行離散化,如果輸入 和輸出輸入 按照 的時間采樣,那么可以將輸入和輸出序列化,則 序列化為:

序列化為:

根據(jù)⑥式可以進行離散化,因此最終濾波輸出的序列 如下所示;

將⑦再進一步簡化得到;

在這里插入圖片描述

其中

所以換成得到;

另外截止頻率和低通濾波器的相同;

將⑧式代入可以得到截止頻率和 的關(guān)系;

這個公式便于簡化后面程序以及截止頻率的計算。

simulink 仿真

這里根據(jù)公式⑥構(gòu)建simulink的子模塊subsystem;

具體如下所示;整體的仿真如下圖所示;其中Sine Wave頻率設(shè)置為2*pi*40,頻率為40赫茲;

其中Sine Wave1頻率設(shè)置為2*pi*4,頻率為4赫茲;

所以這里需要使得2*pi*4的信號衰減,所以根據(jù),截止頻率 的計算公式,可以改變增益的值,具體如下所示;

這里RC增益為0.005,因此

simulink 運行結(jié)果

matlab 實現(xiàn)

matlab根據(jù)以下這個公式進行數(shù)字濾波器的設(shè)計;

另外 的值如何確定需要參考⑧式;

Serial = 0:0.1:100;
Fs = 1;
Phase = 0;
Amp = 1;

N0 = 2*pi*Fs*Serial - Phase;
X0 = Amp*sin(N0);
subplot(4,1,1);
plot(X0);

Fs = 0.02;
N1 = 2*pi*Fs*Serial - Phase;
X1 = Amp*sin(N1);
subplot(4,1,2);
plot(X1);

X2=X0+X1;
subplot(4,1,3);
plot(X2);

len = length(X2);
X3=X2;
p=0.75;

for i=2:len
    X3(i) = p*X3(i-1)+p*(X2(i)- X2(i-1))
end

subplot(4,1,4);
plot(X3);

簡單地分析一下,代碼中的X1,X2,X3

  • X1頻率為 1
  • X2頻率為 0.02

因此可以得到截止頻率如下;

matlab 運行結(jié)果


C語言實現(xiàn)

typedef struct
{

     int16_t  Input[2];
     int16_t  Output[2];
     int32_t  FilterTf;  
     int32_t  FilterTs;
     int32_t  Ky;
} high_filter;

void high_filter_init(high_filter *v);
int16_t high_filter_calc(high_filter *v);

其中;

  • FilterTs為采樣時間 ;
  • FilterTfRC時間常數(shù);
  • Input[0]表示 ;
  • Input[1]表示 ;
  • Output[0]表示 ;
  • Output[1]表示
  • Ky表示 ;

參考公式如下所示;

void high_filter_init(high_filter *v)
     v->Ky = v->FilterTf*1024/(v->FilterTs + v->FilterTf);
}

int16_t high_filter_calc(high_filter *v){

 int32_t tmp = 0;

 tmp = ((int32_t)v->Ky*v->Output[1] + v->Ky*(v->Input[0] - v->Input[1]))/1024;
 if(tmp>32767){
  tmp = 32767;
 }
 
 if( tmp < -32768){
  tmp = -32768;
 }
 
    v->Output[0] = (int16_t)tmp;
    v->Output[1] = v->Output[0];
    v->Input[1] = v->Input[0];
 return v->Output[0];
}




長按下圖二維碼關(guān)注,獨自前進,走得快;結(jié)伴而行,走得遠;在這里除了肝出來的文章,還有一步一個腳印學習的點點滴滴;




免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉