mirror of
https://github.com/SDRSharpR/SDRSharper.git
synced 2025-12-06 04:12:02 +01:00
44 lines
831 B
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|