Пример #1
0
        public void SpectrumData_LinearTransform_1()
        {
            // Case 1 exact division - bins are at 4000 -> mapping to 8000
            var s1 = ltd.LinearTransform(3, 0, 24000);

            Assert.AreEqual(2, s1.Count);
            Assert.AreEqual(3u, s1.FrequencyCount);
            Assert.AreEqual(ScaleType.Linear, s1.AmplitudeScale);
            Assert.AreEqual(ScaleType.Linear, s1.FrequencyScale);
            Assert.AreEqual(8000.0f, s1.FrequencyStep);
            Assert.AreEqual(0.0f, s1.MinFrequency);
            Assert.AreEqual(24000.0f, s1.MaxFrequency);
            CollectionAssert.AreEqual(new float[] { 4, 8, 2.5f }, s1[0].ToArray());
            CollectionAssert.AreEqual(new float[] { 40, 80, 25 }, s1[1].ToArray());
        }
        public void SpectrumData_LinearTransform()
        {
            SpectrumData data = SpectrumData.Create(
                new float[][]
            {
                new float [] { 1, 2, 3, 4, 5 },
                new float [] { 10, 20, 30, 40, 50 }
            },
                ScaleType.Linear,
                ScaleType.Linear,
                0,
                20000
                );

            // Case 1 exact division - bins are at 4000 -> mapping to 8000
            var s1 = data.LinearTransform(3, 0, 24000);

            Assert.AreEqual(2, s1.Count);
            Assert.AreEqual(3u, s1.FrequencyCount);
            Assert.AreEqual(ScaleType.Linear, s1.AmplitudeScale);
            Assert.AreEqual(ScaleType.Linear, s1.FrequencyScale);
            Assert.AreEqual(8000.0f, s1.FrequencyStep);
            Assert.AreEqual(0.0f, s1.MinFrequency);
            Assert.AreEqual(24000.0f, s1.MaxFrequency);
            CollectionAssert.AreEqual(new float[] { 4, 8, 2.5f }, s1[0].ToArray());
            CollectionAssert.AreEqual(new float[] { 40, 80, 25 }, s1[1].ToArray());
            // Case 2 bins are > 1 but fractional and shifted up by 1k
            var s2 = data.LinearTransform(4, 1000, 25000);

            Assert.AreEqual(4u, s2.FrequencyCount);
            Assert.AreEqual(6000.0f, s2.FrequencyStep);
            Assert.AreEqual(1000.0f, s2.MinFrequency);
            Assert.AreEqual(25000.0f, s2.MaxFrequency);
            CollectionAssert.AreEqual(new float[] { 3.0f, 5.25f, 5.8125f, 0.15625f }, s2[0].ToArray());
            CollectionAssert.AreEqual(new float[] { 30f, 52.5f, 58.125f, 1.5625f }, s2[1].ToArray());
        }