1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 数字滤波器设计(高通低通)

数字滤波器设计(高通低通)

时间:2024-03-18 19:40:25

相关推荐

数字滤波器设计(高通低通)

C语言实现IIR滤波器

//低通滤波系数(FIR)//截止频率12Hzstatic double[] h_low = {-0.0833280833705624,0.0169383374811856,0.0996331738000324,0.161291094189399,0.199341376750681,0.212202692091625, 0.199341376750681, 0.161291094189399, 0.0996331738000324,0.0169383374811856, -0.0833280833705624};//高通滤波系数(IIR)// 截止频率0.5Hzstatic double[] h_high_a = { -2.97556554241633,2.95142869449895, -0.975861350573406 };static double[] h_high_b ={0.987856948436085,-2.96357084530825,2.96357084530825,-0.987856948436082 };private double[] LowBuffer= new double[h_high_b.Length];private double[] B_buffer = new double[h_high_b.Length];private double[] A_buffer = new double[h_high_a.Length];public double Low_Filter(double x){int i;for(i=0;i<h_low.Length-1;i++){LowBuffer[i] = LowBuffer[i + 1];}LowBuffer[h_low.Length - 1] = x;double result=0;for (i = 0; i < h_low.Length; i++)result += LowBuffer[i] * h_low[i];return result;}public double High_Filter(double x){B_buffer[0] = x;double result = 0.0;int i = 0;for (i = 0; i < B_buffer.Length; i++)result += B_buffer[i] * h_high_b[i];for (i = 0; i < A_buffer.Length; i++)result -= A_buffer[i] * h_high_a[i];for (i = B_buffer.Length-1; i > 0 ; i--)B_buffer[i] = B_buffer[i - 1];for (i = A_buffer.Length - 1; i > 0; i--)A_buffer[i] = A_buffer[i - 1];if (result > 1.0e10)result=4096;if(result<-1.0e10)result = -4096;A_buffer[0] = result;return result;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。