📄 main.c
字号:
//FIR 150阶Equiripple低通滤波器
//采样频率fs=9600,带通fpass=1000,带阻fstop=1500
//吴臻志作于2006/12/8
#include <c6x.h>
#include "math.h"
float input[1000],output[1000];
const float hn[151] = {
-6.821143740954e-007,-8.231525454932e-007,-1.108515771199e-007,1.769728583639e-006,
3.753287040544e-006,3.607900917028e-006,-4.7239123945e-007,-7.51758657807e-006,
-1.271595790846e-005,-9.632331361307e-006,4.462181284995e-006,2.358438435872e-005,
3.34393517595e-005,1.98858732021e-005,-1.812057573614e-005,-6.070789594826e-005,
-7.400941691258e-005,-3.273273723983e-005,5.422780913429e-005, 0.000135971097565,
0.000143919775049,4.108727354119e-005,-0.0001349276815218,-0.0002733053634464,
-0.0002513733097153,-2.802956630823e-005,0.0002947805781212,0.0005028052058228,
0.0003989811579797,-3.826670801028e-005,-0.0005828692740218, -0.00085794955583,
-0.0005775977384193,0.0002099591904858, 0.001063525476571, 0.001370713219496,
0.0007588097755802,-0.0005646503323556,-0.001815400887812,-0.002064867329854,
-0.0008865502682663, 0.001210225925973, 0.002929702838291, 0.002948505083607,
0.0008679687376017,-0.002290900672422, -0.00451007810814,-0.004007304978016,
-0.0005620019874984, 0.003999424555613, 0.00667986825819, 0.005200291549417,
-0.0002403921506735,-0.006608527518153,-0.009609688242407,-0.006459649192111,
0.001862778436419, 0.01055735399654, 0.01359928445527, 0.007695483864648,
-0.004875312327758, -0.01670713271109, -0.01932575537974, -0.00880541816368,
0.01053989202493, 0.02723886866414, 0.02876171468146, 0.009687768039416,
-0.02282788241895, -0.05017447068234, -0.05048285471445, -0.01025608656381,
0.06667769300826, 0.1581747530314, 0.2321139939642, 0.260452339752,
0.2321139939642, 0.1581747530314, 0.06667769300826, -0.01025608656381,
-0.05048285471445, -0.05017447068234, -0.02282788241895, 0.009687768039416,
0.02876171468146, 0.02723886866414, 0.01053989202493, -0.00880541816368,
-0.01932575537974, -0.01670713271109,-0.004875312327758, 0.007695483864648,
0.01359928445527, 0.01055735399654, 0.001862778436419,-0.006459649192111,
-0.009609688242407,-0.006608527518153,-0.0002403921506735, 0.005200291549417,
0.00667986825819, 0.003999424555613,-0.0005620019874984,-0.004007304978016,
-0.00451007810814,-0.002290900672422,0.0008679687376017, 0.002948505083607,
0.002929702838291, 0.001210225925973,-0.0008865502682663,-0.002064867329854,
-0.001815400887812,-0.0005646503323556,0.0007588097755802, 0.001370713219496,
0.001063525476571,0.0002099591904858,-0.0005775977384193, -0.00085794955583,
-0.0005828692740218,-3.826670801028e-005,0.0003989811579797,0.0005028052058228,
0.0002947805781212,-2.802956630823e-005,-0.0002513733097153,-0.0002733053634464,
-0.0001349276815218,4.108727354119e-005, 0.000143919775049, 0.000135971097565,
5.422780913429e-005,-3.273273723983e-005,-7.400941691258e-005,-6.070789594826e-005,
-1.812057573614e-005,1.98858732021e-005,3.34393517595e-005,2.358438435872e-005,
4.462181284995e-006,-9.632331361307e-006,-1.271595790846e-005,-7.51758657807e-006,
-4.7239123945e-007,3.607900917028e-006,3.753287040544e-006,1.769728583639e-006,
-1.108515771199e-007,-8.231525454932e-007,-6.821143740954e-007
};
void filter(){
int n,i;
float y;
for (i=0;i<500;i++){
input[i]=sin(2*3.1415926*900*i/9600)+sin(2*3.1415926*1200*i/9600)+sin(2*3.1415926*1500*i/9600);
}
//input[250]=1e37;
for (i=0;i<500;i++){
y=0;
for(n=0;n<=150;n++){
if (i-n>=0)
y=y+input[i-n]*hn[n];
}
output[i]=y;
}
while(1);
}
void main(){
filter();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -