?? 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 + -