Skip to content

Commit f1c8b15

Browse files
committed
Create TestAGC.cs
explore AGC options swharden/FSKview#15
1 parent c1661ef commit f1c8b15

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/Spectrogram.Tests/TestAGC.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using NUnit.Framework;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
7+
namespace Spectrogram.Tests
8+
{
9+
class TestAGC
10+
{
11+
//[Test]
12+
public void Test_QRSS_noAGC()
13+
{
14+
string wavFilePath = "../../../../../data/qrss-10min.wav";
15+
(int sampleRate, double[] L) = WavFile.ReadMono(wavFilePath);
16+
17+
18+
int fftSize = 8192;
19+
var spec = new Spectrogram(sampleRate, fftSize, stepSize: 2000, maxFreq: 3000);
20+
spec.Add(L);
21+
spec.SaveImage("qrss-AGCoff.png", intensity: 3);
22+
23+
var ffts = spec.GetFFTs();
24+
double normalIntensity = 2;
25+
for (int i = 0; i < ffts.Count; i++)
26+
{
27+
double[] sorted = new double[ffts[i].Length];
28+
ffts[i].CopyTo(sorted, 0);
29+
Array.Sort(sorted);
30+
31+
double percentile = 0.25;
32+
int percentileIndex = (int)(percentile * ffts[0].Length);
33+
double floorValue = sorted[percentileIndex];
34+
35+
for (int y = 0; y < ffts[i].Length; y++)
36+
{
37+
ffts[i][y] = ffts[i][y] / floorValue * normalIntensity;
38+
}
39+
40+
Console.WriteLine(floorValue);
41+
}
42+
43+
spec.SaveImage("qrss-AGCon.png", intensity: 3);
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)