📄 peakvalue.txt
字号:
PeakValue(double* Data,double* peak,int m,int n)
{
//Data为待分析的数组;peak为排序后的数组;
//m 为Data数组大小;n 为peak数组的大小。
//m_Min 为Data数组中最小值
//假设峰值个数PN>n;
double* In;
double* Out;
int* Flag;
int PN=0;
double m_Min=Data[0];
In=(double*) calloc(m+2,sizeof(double));
Out=(double*) calloc(n,sizeof(double));
Flag=(int*) calloc(m,sizeof(int));
In[0]=Data[0]-1;
for (int k=0;k<m;k++)
{
In[k+1]=Data[k];
Flag[k]=0;
}
In[m+1]=Data[m]-1;
for (int i=1;i<m+1;i++)
{
if (In[i]<m_Min)
{
m_Min=In[i];
}
if ((In[i]>In[i-1])&&(In[i]>In[i+1]))//判断中间点是否比两边点的值大
{
Flag[PN]=i;
PN++;
}
}
for (int j=0;j<n;j++)
{
Out[j]=m_Min;
peak[j]=0;
}
for (int f=0;f<PN;f++)
{
for (int g=0;g<n;g++)
{
if(In[Flag[f]]>=Out[g])
{
for (int h=0;h<n-g-1;h++)
{
Out[n-h-1]=Out[n-h-2];
peak[n-h-1]=peak[n-h-2];
}
Out[g]=In[Flag[f]];
peak[g]=Flag[f]-1; //最大值下标
break; //跳出这个for循环!
}
}
}
free(In);
free(Out);
free(Flag);
return ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -