/*******************************************************************/
/*******************************************************************/
/* This program implements the function of finding out the largest */
/* and the second largest values of the sequence of "in_buffer[10]"*/
/*******************************************************************/
/*******************************************************************/
#include <stdio.h>
#include <math.h>
#include "freq_max_finding.h"
//extern float cosf(float x);
extern int in_buffer[10]={0,0,0,0,0,0,0,0,0,0}; /* in_buffer[]中的值为频谱点 */
//int out_buffer[2];
static void dataIN(void);
void main()
{
int i=0;
// float data_max=0;
int data_max=0;
// float data_max2=0;
int data_max2=0;
int i_max=0;
int i_max2=0;
float f_max=0;
float f_max2=0;
int p=0;
int q=0;
// float a=0, b=3.14159;
// a=a+0;
// b=b+0;
// a=cosf(b);
/**********************************************************/
/** 几句废话,消除warning:data_max was set but never used **/
data_max=data_max+0;
data_max2=data_max2+0;
// i_max=i_max+0;
// i_max2=i_max2+0;
f_max=f_max+0;
f_max2=f_max2+0;
/**********************************************************/
dataIN(); /* read data into memory */
/************************************************/
/** find out the greatest value of "in_buffer" **/
for(i=0;i<=POINT_ALL-2;i++)
{
if (in_buffer[i+1]>in_buffer[i])
{data_max=in_buffer[i+1]; i_max=i+1;}
else {data_max=in_buffer[i]; i_max=i;}
}
f_max=FS*i_max/POINT_ALL; /* calculate the value of carrier frequency */
/************************************************/
/*****************************************************/
/* find out the second greatest value of "in_buffer" */
in_buffer[i_max]=0; /* set 0 to "in_buffer[i_max]"*/
for(p=1;p<=POINT_ALL/2;p++)
{
for(q=0;q<=POINT_ALL/2-2;q++)
{
if (in_buffer[q+1]>in_buffer[q])
{data_max2=in_buffer[q+1]; i_max2=q+1;}
else {data_max2=in_buffer[q]; i_max2=q;}
}
/* determines the availability of i_max2 through
estimating the distance of i_max between i_max2 */
if (abs(i_max-i_max2)<=GAP) in_buffer[i_max2]=0;
else break;
}
f_max2=FS*i_max2/POINT_ALL; /* calculate the value of carrier frequency2 */
/*****************************************************/
while(1);
}
static void dataIN()
{
/* do read data from host file */
return;
}
复制代码 |