69,371
社区成员
发帖
与我相关
我的任务
分享
double Sin_period(double signal[],int size){
double top_cnt=0;/*波峰个数*/
int first_top;/*一个波峰出现的时间*/
int last_top;/*后一个波峰出现的时间*/
double result=0
int index;
for(index=1;index<n-1;index++){
if(signal[index]>signal[index-1] && signal[index]>signal[index+1]){/*到波峰*/
top_cnt++;
if(1==top_cnt)first_top=index;/*记下第一个波峰的时间*/
last_top=index;
}
}
if(signal[0]=signal[last_top]){/*第一个位置为波峰的情况*/
first_top=0;
top_cnt++;
}
if(signal[index]==signal[last_top]){/*最后一个位置为波峰的情况*/
last_top=index;
top_cnt++;
}
if(top_cnt>1)/*防止除以0*/result=((last_top-first_top)*1.0)/(top_cnt-1);/*均值*/
return result;
}
#include<stdio.h>
float peak_data(float data1[],int n)'数组的个数只能从外部传入.
{int cnt;
int a;
float y[];
int *x=(int*) malloc(n*2);/*动态分配内存空间*/
cut=0;
y=data1;
for(a=1;a>(n-1);a++)
if (y[a]>y[a-1] && y[a]>y[a+1])
{cut++;
*(x+cut)=a;
}
return (*(x+cut)-*(x+1))/(--cut)
}