C语言寻找一组数据中的第一第二峰值
实验要求,我需要找出一组数组中的两个峰值:第一个峰值和第二个峰值及其数组下标。这组数据画出的图应该是这样的,我就要找出图中的那两个峰值
我写的程序如下,我试了一下,这样找出的数据是不对的。比如有的数据会找出这样的数(隔得太近了,肯定不是)
所以,请问有没有办法找出这样的两个峰值。
程序代码:
#include <iostream> int main(int argc, char** argv) { double a[3000]; double peak1,peak2,min=a[0]; int i,p1,p2,t1,t2,life; FILE *fp=NULL; FILE *fpp=NULL; fp=fopen("G:\\uz\\new\\data100578.txt","r"); for(i=0;i<2500;i++) { fscanf(fp,"%lf",&a[i]); } for(i=1;i<2500;i++) { if(a[i]<min) { min=a[i]; peak1=a[i]; p1=i+1; } }//找第一个峰值 for(i=p1,min=a[p1];i<2500;i++) { if(a[i]<min) { min=a[i]; peak2=a[i]; p2=i+1; } }//找第二个峰值 printf("%lf %d\n",peak1,p1); printf("%lf %d\n",peak2,p2); fclose(fp); return 0; }
附几组数据
data.zip
(7.63 KB)
[此贴子已经被作者于2020-2-11 12:19编辑过]