SDRSharper/SDRSharper.PanView/SDRSharp.PanView/PeakDetector.cs
SDRSharpR c07e6e6034 SDRSharper (SDRSharp Remake) Full Source (VS2017)
SDRSharper (SDRSharp Remake) Full Source (VS2017)
2018-03-26 14:02:05 -07:00

44 lines
831 B
C#

namespace SDRSharp.PanView
{
public sealed class PeakDetector
{
private const byte Threshold = 15;
public static void GetPeaks(byte[] buffer, bool[] peaks, int windowSize)
{
for (int i = 0; i < buffer.Length; i++)
{
bool flag = true;
byte b = byte.MaxValue;
byte b2 = 0;
for (int j = 0; j < windowSize; j++)
{
int num = i + j - windowSize / 2;
if (num != i && num >= 0 && num < buffer.Length)
{
if (buffer[num] > buffer[i])
{
flag = false;
break;
}
if (buffer[num] == buffer[i] && i < num)
{
flag = false;
break;
}
if (buffer[num] > b2)
{
b2 = buffer[num];
}
if (buffer[num] < b)
{
b = buffer[num];
}
}
}
peaks[i] = (flag && b2 - b >= 15);
}
}
}
}