2 * Karinto Library Project
\r
4 * This software is distributed under a zlib-style license.
\r
5 * See license.txt for more information.
\r
10 using NUnit.Framework;
\r
12 namespace KarintoTest
\r
14 class WindowFunctionTest
\r
16 private static double[] normal;
\r
17 private static Range range;
\r
19 static WindowFunctionTest()
\r
21 range = new Range(0, 10);
\r
22 normal = new double[20];
\r
23 for (int i = 0; i < normal.Length; ++i)
\r
30 public void FlatTop()
\r
32 WindowFunction w = new WindowFunction(
\r
33 WindowFunction.FunctionType.FlatTop, range);
\r
34 double[] s = w.ApplyTo(normal);
\r
37 // Maxima で計算(fpprec:18)
\r
38 Assert.AreEqual(0.004, s[0], e);
\r
39 Assert.AreEqual(-0.06876082640248495, s[1], e);
\r
40 Assert.AreEqual(-0.316247584249852884, s[2], e);
\r
41 Assert.AreEqual(0.248760826402484911, s[3], e);
\r
42 Assert.AreEqual(2.81424758424985366, s[4], e);
\r
43 Assert.AreEqual(4.64,s[5],e);
\r
44 Assert.AreEqual(2.81424758424985366, s[6], e);
\r
45 Assert.AreEqual(0.248760826402484911, s[7], e);
\r
46 Assert.AreEqual(-0.316247584249852884, s[8], e);
\r
47 Assert.AreEqual(-0.06876082640248495, s[9], e);
\r
48 Assert.AreEqual(0.004,s[10],e);
\r
52 public void Hamming()
\r
54 WindowFunction w = new WindowFunction(
\r
55 WindowFunction.FunctionType.Hamming, range);
\r
56 double[] s = w.ApplyTo(normal);
\r
59 // Maxima で計算(fpprec:18)
\r
60 Assert.AreEqual(0.08, s[0], e);
\r
61 Assert.AreEqual(0.167852182587524214, s[1], e);
\r
62 Assert.AreEqual(0.397852182587524245, s[2], e);
\r
63 Assert.AreEqual(0.682147817412475826, s[3], e);
\r
64 Assert.AreEqual(0.912147817412475904, s[4], e);
\r
65 Assert.AreEqual(1.0, s[5], e);
\r
66 Assert.AreEqual(0.912147817412475904, s[6], e);
\r
67 Assert.AreEqual(0.682147817412475826, s[7], e);
\r
68 Assert.AreEqual(0.397852182587524245, s[8], e);
\r
69 Assert.AreEqual(0.167852182587524214, s[9], e);
\r
70 Assert.AreEqual(0.08, s[10], e);
\r
76 WindowFunction w = new WindowFunction(
\r
77 WindowFunction.FunctionType.Hann, range);
\r
78 double[] s = w.ApplyTo(normal);
\r
81 // Maxima で計算(fpprec:18)
\r
82 Assert.AreEqual(0.0, s[0], e);
\r
83 Assert.AreEqual(0.0954915028125262981, s[1], e);
\r
84 Assert.AreEqual(0.345491502812526321, s[2], e);
\r
85 Assert.AreEqual(0.654508497187473679, s[3], e);
\r
86 Assert.AreEqual(0.904508497187473753, s[4], e);
\r
87 Assert.AreEqual(1.0, s[5], e);
\r
88 Assert.AreEqual(0.904508497187473753, s[6], e);
\r
89 Assert.AreEqual(0.654508497187473679, s[7], e);
\r
90 Assert.AreEqual(0.345491502812526321, s[8], e);
\r
91 Assert.AreEqual(0.0954915028125262981, s[9], e);
\r
92 Assert.AreEqual(0.0, s[10], e);
\r
96 public void Rectangular()
\r
98 WindowFunction w = new WindowFunction(
\r
99 WindowFunction.FunctionType.Rectangular, range);
\r
100 double[] s = w.ApplyTo(normal);
\r
103 Assert.AreEqual(1.0, s[0], e);
\r
104 Assert.AreEqual(1.0, s[1], e);
\r
105 Assert.AreEqual(1.0, s[2], e);
\r
106 Assert.AreEqual(1.0, s[3], e);
\r
107 Assert.AreEqual(1.0, s[4], e);
\r
108 Assert.AreEqual(1.0, s[5], e);
\r
109 Assert.AreEqual(1.0, s[6], e);
\r
110 Assert.AreEqual(1.0, s[7], e);
\r
111 Assert.AreEqual(1.0, s[8], e);
\r
112 Assert.AreEqual(1.0, s[9], e);
\r
113 Assert.AreEqual(1.0, s[10], e);
\r