巴特沃斯滤波器
2015-09-08 10:17
309 查看
#include "math.h" #include<stdio.h> #include<string.h> #include<stdlib.h> #define MAX 2500 #define PI 3.1415926 /**************************************************************************************** * biliner(int fc,fs,int N,float*x) * 参数说明 fc 截止频率 * fs 采样率 * N (1=<N<=3) 阶数 * *x 传入的待滤波数组 *双线性法基于巴特沃斯的数字滤波器 ****************************************************************************************/ using namespace std; void biliner(int fc,int N,int fs,float *x) { //定义变量 long i=0; float W,Wc,t,y[MAX];//MAX是3000个点 //转化为数字角频率 W=2*PI*fc/fs; //预畸变 Wc=2*fs*tan(w/2); //去归一化影响 t=2*fs/wc; switch(N) { /*一阶情况*/ case 1: //Hs=1/(p+1); y[0]=x[0]/(1+t); for(i=1;i<MAX;i++) y[i]=(x[i]+x[i-1]-(1-t)*y[i-1])/(1+t); break; /*二阶情况*/ case 2: //Hs=1/(p*p+1.414*p+1); y[0]=x[0]/(t*t+1.414*t+1); y[1]=(x[1]+2*x[0]-(2-2*t*t)*y[0])/(t*t+1.414*t+1); for(i=2;i<MAX;i++) y[i]=(x[i]+2*x[i-1]+x[i-2]-(2-2*t*t)*y[i-1]-(1-1.414*t+t*t)*y[i-2])/(t*t+1.414*t+1); break; /*三阶*/ case 3: y[0]=x[0]/(t*t*t+2*t*t+2*t+1); y[1]=(x[1]+3*x[0]-(3-3*t*t*t-2*t*t+2*t)*y[0])/(t*t*t+2*t*t+2*t+1); y[2]=(x[2]+3*x[1]+3*x[0]-(3-3*t*t*t-2*t*t+2*t)*y[1]-(3*t*t*t-2*t*t-2*t+3)*y[0])/(t*t*t+2*t*t+2*t+1); for(i=3; i < MAX ;i++) y[i]=(x[i]+3*x[i-1]+3*x[i-2]+x[i-3]-(3-3*t*t*t-2*t*t+2*t)*y[i-1]-(3*t*t*t-2*t*t-2*t+3)*y[i-2]-(1-t*t*t+2*t*t-2*t)*y[i-3])/(t*t*t+2*t*t+2*t+1); break; default: return ; break; } for(i=0;i<MAX;i++) x[i]=y[i]; //输出x[] return; } int main(int argc, char *argv[]) { float x[MAX]; int i,lenth,m; FILE *fpx=fopen("newdata.txt","w"); FILE *fp=fopen("ChannelData.txt","r"); if(fp==NULL||fpx==NULL) { printf("失败!!!\n"); return 0; } for(i=0;i<MAX;i++) fscanf(fp,"%f ",&x[i]);//输入x[] biliner(2,2,200,x); for(i=0;i<MAX;i++) fprintf(fpx,"%f\n",x[i]);//输出x[] fclose(fpx); fclose(fp); }
相关文章推荐
- Linux 解压包命令大全
- svn的权限设置
- Oracle中常见的33个等待事件小结
- 有关nginx+php-fpm配置文件的组织结构
- Junos SRX NAT介绍
- yii2 完整安装指南
- 四个常见html网页乱码问题及解决办法
- Android Studio设置默认文件编码,告别乱码
- 跟我一起学习VIM - The Life Changing
- POJ 1129:Channel Allocation 四色定理+暴力搜索
- 折半查找(二分查找)
- 《转》学习JQuery该掌握的内容
- 蓝牙通讯 ble
- POJ 1129:Channel Allocation 四色定理+暴力搜索
- C++站点
- nginx php-fpm 输出php错误日志的配置方法
- ubuntu鼠标键盘延迟问题
- 获得客户端实际Ip地址
- viewpage的刷新
- linux/ubuntu svn 项目拷贝/迁移/合并