⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter_a2v.c

📁 详细的说明了DSP调试内容
💻 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 + -