Linux语言写的高通滤波,高通滤波器c语言实现
描述
高通濾波器,又稱低截止濾波器、低阻濾波器,允許高于某一截頻的頻率通過,而大大衰減較低頻率的一種濾波器。它去掉了信號中不必要的低頻成分或者說去掉了低頻干擾。
高通濾波器是一種讓某一頻率以上的信號分量通過,而對該頻率以下的信號分量大大抑制的電容、電感與電阻等器件的組合裝置。其特性在時域及頻域中可分別用沖激響應及頻率響應描述。后者是用以頻率為自變量的函數表示,一般情況下它是一個以復變量jω為自變量的的復變函數,以H(jω)表示。它的模H(ω)和幅角φ(ω)為角頻率ω的函數,分別稱為系統的“幅頻響應”和“相頻響應”,它分別代表激勵源中不同頻率的信號成分通過該系統時所遇到的幅度變化和相位變化。可以證明,系統的“頻率響應”就是該系統“沖激響應”的傅里葉變換。當線性無源系統可以用一個N階線性微分方程表示時,頻率響應H(jω)為一個有理分式,它的分子和分母分別與微分方程的右邊和左邊相對應。
高通濾波器分類:
按照濾波器的數學特性:分為一階高通濾波器、二階高通濾波器
按照所采用的器件分:有源高通濾波器、無源高通濾波器
以上兩種分類方法相互獨立。有源高通濾波器更為常見,如一階有源高通濾波器、二階有源高通濾波器等。其中一階有源高通濾波器較為簡單。
一階有源高通濾波器:
一階有源高通濾波器幅頻特性曲線:
高通濾波器c語言實現:
clc wp=2*2250/15000;
ws=2*1500/15000;
Bt=wp-ws N0=ceil(6.6/Bt);
N=N0+mod(N0+1,2) wc=(wp+ws)/2;
b=fir1(N-1, wc,‘high’,hamming(N));freqz(b,1,512,15000)%可以查看幅度響應、沖激響應等
h=buffer(round(b*32768),8)’ ; %參數*2^15,把小數點移最高位后面后取 % 整,然后排成8個一行便于輸出。
csvwrite(‘table.txt’,h) %參數表輸出到文件table.txt中
#include “math.h”
#include “tms320.h”
#include “dsplib.h”
#define NX 300
#define NH 67
#define PI 3.1415926
#pragma
DATA_SECTION(h,“.coeffs”)
DATA h[NH]={-18,-0,21,34,29,-0,-42,-72, -61,-0,88,147,122,-0,-167,-275, -225,-0,297,483,391,-0,-516,-841, -689,-0,949,1610,1399,-0,-2411,-5168, -7354,24557,-7354,-5168,-2411,-0,1399,1610, 949,-0,-689,-841,-516,-0,391,483, 297,-0,-225,-275,-167,-0,122,147, 88,-0,-61,-72,-42,-0,29,34, 21,-0,-18};
#pragma DATA_SECTION(db,“.dbuffer”)
DATA db[NH+2] ; DATA r[NX];
DATA *dbptr = &db[0];
void main()
{ int i;
short x[NX];
for(i=0;i《NX;i++)x[i]=0;
for (i=0;i《NX;i++)
{x[i]=(short)(((1+sin(PI*6000*i/15000))*sin(PI*8000*i/15000)*32768/3)); }
for (i=0; i《NX; i++) r[i] = 0; // clear output buffer (optional)
for (i=0; i《NH+2; i++) db[i] = 0; // clear delay buffer (a must) //
fir2(x, h, r, dbptr, NX, NH);//雙MAC運算,速度快
fir(x, h, r, dbptr, NX, NH);//單MAC運算,速度相對雙MAC要慢一些
while(1);
}
打開APP精彩內容
點擊閱讀全文
總結
以上是生活随笔為你收集整理的Linux语言写的高通滤波,高通滤波器c语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux vi 双屏显示,manjar
- 下一篇: linux 全双工 wifi热点,Lin