有限長濾波器在血壓測量中的運用

經過ADC採集到的位於袖袋內的壓力傳感器的電壓值,咱們能夠換算獲得對應的壓力值。而後根據血壓算法,找到對應的收縮壓和舒張壓。系統實現的核心就是濾波和尋找算法。在ADC採樣以前加入一個硬件的RC高通濾波器得到交流信號。可是這個交流信號採樣後依然會有ADC自己的噪聲和白噪聲,這時就須要加入軟件濾波算法。html

##有限長濾波器## 有限長濾波器是一種數字濾波器(finite impulse response filter)。窗函數法設計FIR數字濾波器是在時域進行的,於是必須由理想的頻率響應推導出對應的單位取樣響應hd(n),hd(n)是無限的。必須設計一個有限的單位取樣響應h (n)去逼近hd(n) 。算法

有限長單位脈衝響應hd(n)能夠由期待獲得的頻率響應函數和公式hd(n)=1/2π∫Hd(e^jw)(e^jw)dw獲得。函數

##Matlab實現##設計

<!-- lang: cpp -->
n=2;f0=0.6;fs=200;                   %2表明階數,fs爲採樣率,f0是截止頻率
[b,a]=butter(n,f0/(fs/2),'high')   %用butter函數獲取butter濾波器的係數
y(1:3)=0;                                   %濾波後的前面3個點爲0
for i=3:1:num2                          %高通濾波,從第3個點到最後一個點
y(i)=-1*(a(2)*y(i-1)+a(3)*y(i-2))+b(1)*u(i)+b(2)*u(i-1)+b(3)*u(i-2);

##C實現##3d

<!-- lang: cpp -->
void butter_high(double*	in,double*	out,int	length)
{
int i;
for(i=2;i<length-1;i++)
out[i]=-1*(A2_H*out[i-1]+A3_H*out[i-2])+B1_H*in[i]+B2_H*in[i-1]+B3_H*in[i-2];
}

其中A2_H,A3_H爲Matlab算得的濾波係數。我感受FIR和小波算法很像,都是構造一些係數用來卷積點。而這些係數相乘後的頻率響應在頻域上恰好構造了一個高通濾波器。這就達到了濾波的目的。說實話,仍是沒理解太透徹。由於信號與系統實在忘得太快了。code

##Reference## [1].http://wenku.baidu.com/view/dae2fb0103d8ce2f0066236b.htmlhtm

相關文章
相關標籤/搜索