📄 filter_a2v.c
字号:
#include <math.h>
#include <stdio.h>
#include "filter.h"
float filter_a2v(int input)
{
//--------------------------------calculating system feature data------------------------------//
float yvAC1=0;
float *sigma;
int i=0,j=0,k=0;
int TaN;
float sum_ca_end;
dt=1.0/fs;
TaN=(int)(m*Ta/dt);
for(i=0;i<TaN;i++)
sys_data[i]=0.0;
for(i=0;i<TaN;i++)
{
sys_data[i]=1-exp((-i)*dt/Ta);
}
//--------------------------------------sys_data 转置-------------------------------------------//
for(i=0;i<TaN/2;i++)
{
double temp;
temp=sys_data[i];
sys_data[i]=sys_data[TaN-i-1];
sys_data[TaN-i-1]=temp;
}
//-------------------calculating periodic time length for DC and DC out-------------------------//
//----------------------------initiating buffer for signal data---------------------------------//
TaN4dcOut=(short)(tLen*1.0/dt);
/* for(i=0;i<=Ca_MaxNum;i++)
{
Ca[i]=0;
Ca_end[i]=0.0;
}
for(i=0;i<sig_data_MaxNum;i++)
{
sig_data[i]=0.0;
}
for(i=0;i<yDC_MaxNum;i++)
{
yDC[i]=0.0;
}
for(i=0;i<yAC_MaxNum;i++)
{
yAC[i]=0.0;
}
for(i=0;i<yvDC_MaxNum;i++)
{
yvDC[i]=0.0;
}
for(i=0;i<yv_MaxNum;i++)
{
yv[i]=0.0;
}
*/
//-----------------------------calculating DC-out signals--------------------------------------//
// for(i=0;i<2048;i+=1)
// {
for(j=0;j<2*TaN4dcOut-1;j++)
{
Ca[j]=Ca[j+1];
}
Ca[2*TaN4dcOut-1]=input;
sum=0;
/* if(i<TaN4dcOut)
{
for(j=0;j<TaN4dcOut;j++)
sum+=Ca[j];
yDC=sum*1.0/(i+1);
}
else
{*/
for(j=1;j<2*TaN4dcOut;j=j+2)
{ sum+=Ca[j];}
yDC=sum*1.0/TaN4dcOut;
// }
yAC=input-yDC;
//-----------------------------integrating the DC-out signal------------------------------------
if(n%2==0)
{
sigma=&pointer_1;
pointer_1=pointer_1+sig_data[0];
n++;
}
else
{
sigma=&pointer_2;
pointer_2=pointer_2+sig_data[0];
n++;
}
// sigma=sigma+sig_data[0];
for(j=0;j<2*TaN-1;j++)
{
sig_data[j]=sig_data[j+1];
}
sig_data[2*TaN-1]=yAC;
y_dyn=0;
for(k=0,j=1;k<TaN,j<2*TaN;k++,j=j+2)
{
y_dyn+=sys_data[k]*sig_data[j];
}
yv=dt*(y_dyn+(*sigma));
//////////////////////////////////////////////////////////////////////////////////////////////////
// modi==0 for removing the starting part of signals, //
// so the length of signal will be less than before //
// cut the DC out from the signals //
//////////////////////////////////////////////////////////////////////////////////////////////////
//if(modi==0)
//{
for(j=0;j<2*TaN4dcOut-1;j++)
{
Ca_end[j]=Ca_end[j+1];
}
Ca_end[2*TaN4dcOut-1]=yv;
/* if(i<2*TaN4dcOut) //TaN4dcOut>i,*.m程序的写法
yvAC[i]=0;
else
{*/
sum_ca_end=0;
for(j=1;j<2*TaN4dcOut;j=j+2)
{sum_ca_end+=Ca_end[j];}
yvDC=sum_ca_end*1.0/TaN4dcOut;
// yvAC[i-2*TaN4dcOut+1]=yv[i]-yvDC[i]; //TaN4dcOut>i,*.m程序的写法
yvAC1=yv-yvDC;
/* for(i=NUM;i>0;i--)
{OutputTable[i]=OutputTable[i-1];}*/
// }
// }
return (yvAC1); }
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -