本帖最后由 shentqlf 于 2017-8-18 11:31 编辑
eBox最新支持Fir滤波器,支持低通、高通、带通、带阻四种模式。
最重要的是他不需要FDAtool计算参数表。自带了参数的计算工具。而且支持多种窗体RECTANGULAR, BARTLETT, HANNING, HAMMING, BLACKMAN
首先要感谢:
http://www.labbookpages.co.uk/audio/firWindowing.html
这个库真是太好用了,网上看了各种代码,都觉得不太好,从GitHub上找到了一份代码,顺便找到了那个愿网址,看到这个代码后觉得非常厉害!果断移植。
-
- int kaiserWindowLength;
- float sampFreq = 1000;//采样率
-
- // Low and high pass filters
- float transFreq1 = 20;
- float transFreq2 = 70;
- //设定滤波器特性,0.01:ripple;10: transition band width;sampFreq:采样率
- //该函数会根据前两个值得设定,计算出滤波器阶数。
- fir.calculateKaiserParams(0.01, 10, sampFreq, &kaiserWindowLength, &beta);
- //根据生成的窗口长度,初始化一个自己想要的滤波器
- // float *lpf = fir.create1TransSinc(kaiserWindowLength, transFreq1, sampFreq, LOW_PASS);
- float *lpf = fir.create1TransSinc(kaiserWindowLength, transFreq1, sampFreq, HIGH_PASS);
- // float *lpf = fir.create2TransSinc(kaiserWindowLength, transFreq1,transFreq2, sampFreq, BAND_PASS);
- // float *lpf = fir.create2TransSinc(kaiserWindowLength, transFreq1,transFreq2, sampFreq, BAND_STOP);
- float *lpf_kaiser = fir.createKaiserWindow(lpf, NULL, kaiserWindowLength, beta);
- uart1.printf("kaiserWindowLength = %d
",kaiserWindowLength);
- uart1.printf("beta = %d
",beta);
- //使用Kaiser Window数据设置滤波器的参数。
- fir.set(lpf_kaiser,kaiserWindowLength);
复制代码
fir.calculateKaiserParams(0.01, 10, sampFreq, &kaiserWindowLength, &beta);
999999.png (96.38 KB, 下载次数: 0)
下载附件
2017-8-18 10:22 上传
eBox最新代码请关注:
eBox_STM32F1
多谢分享!
一周热门 更多>