?? bpf.cpp
字號:
#include "stdafx.h"
#include "BPF.h"
/*********************************
b:分子系數數組指針
a:分母系數數組指針
buflen:濾波器階數-1,也就是系數數組長度
inputdat:輸入數據
返回:濾波后的數據**********************************/
/*
int BPF30(const double *b,const double *a,unsigned char buflen,int inputdat)
{
unsigned char mod=256-buflen;
static unsigned char n=0;
static double X[8]={0,0,0,0,0,0,0,0};
static double Y0=0;
static double Y1=0;
static double Y2=0;
static double Y3=0;
static double Y4=0;
static double Y5=0;
static double Y6=0;
static double Y7=0;
static char mark=0;
double A,B;
unsigned char n_1,n_2,n_3,n_4,n_5,n_6,n_7;
n_1=(n-1);
n_1%=mod;
n_2=(n-2);
n_2%=mod;
n_3=(n-3);
n_3%=mod;
n_4=(n-4);
n_4%=mod;
n_5=(n-5);
n_5%=mod;
n_6=(n-6);
n_6%=mod;
n_7=(n-7);
n_7%=mod;
X[n]=inputdat;
A=b[0]*X[n]+b[1]*X[n_1]+b[2]*X[n_2]+b[3]*X[n_3]+b[4]*X[n_4]+b[5]*X[n_5]+b[6]*X[n_6];//+b[7]*X[n_7];
B=a[1]*Y1+a[2]*Y2+a[3]*Y3+a[4]*Y4+a[5]*Y5+a[6]*Y6;//+a[7]*Y7;//+a[0]*Y0;
Y0=A-B;
// Y7=Y6;
Y6=Y5;
Y5=Y4;Y4=Y3;Y3=Y2;Y2=Y1;Y1=Y0;
n=(n+1);
n%=buflen;
return (short)Y0;
}*/
int BPF30(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF60(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF100(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF150(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF300(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF500(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF1k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF2k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF3k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF4k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF5k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF6k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF7k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF8k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF9k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
int BPF10k(const double *b,const double *a,unsigned char buflen,int inputdat)
{
static double X[]={0,0,0,0,0,0,0,0,0,0,0};
static double Y[]={0,0,0,0,0,0,0,0,0,0,0};
double yn;
static unsigned char n=0;
unsigned char m;//=(n-1)%(256-buflen);
unsigned char kb,ka,i;
unsigned char mod=256-buflen;
X[n]=inputdat;
for(i=0,kb=0,ka=1,yn=0;i<buflen;i++)
{
m=n-kb;
m%=mod;
yn+=(b[i]*X[m]);
if(i>0)
{
m=n-ka;
m%=mod;
yn-=(a[i]*Y[m]);
ka=(++ka)%buflen;
}
kb=(++kb)%buflen;
}
Y[n]=yn;
n=(++n)%buflen;
return ((int)yn);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -