设置参数的时候Fstop最好提前一些真的要滤除的波形。
int fs=48000;
double w1=2*pi*4000,w2=2*pi*20000;
sine[i]=sin(w1*i*1.0/fs)+sin(w2*i*1.0/fs);
经过FIR滤波后得
由于单片机的实时处理不够,因为如果采样率太高,那留给FIR的时间太少,无法计算。如果采样率太低。则不符合奈奎斯特采样定律。因此我建议先用单片机ADC以一定采样率采集波形,之后再统一用FIR滤波进行处理。
设置参数的时候Fstop最好提前一些真的要滤除的波形。
int fs=48000;
double w1=2*pi*4000,w2=2*pi*20000;
sine[i]=sin(w1*i*1.0/fs)+sin(w2*i*1.0/fs);
经过FIR滤波后得
由于单片机的实时处理不够,因为如果采样率太高,那留给FIR的时间太少,无法计算。如果采样率太低。则不符合奈奎斯特采样定律。因此我建议先用单片机ADC以一定采样率采集波形,之后再统一用FIR滤波进行处理。