99TEST_CASE(
"augmenting a 1 sided PSD",
"[sigproc::psdUtils]" )
101 GIVEN(
"a 1 sided PSD, with a 0 freq value" )
105 std::vector<double> f( 5 ), psd( 5 );
107 for(
size_t n = 0; n < psd.size(); ++n )
110 psd[n] = pow( f[n], -2. );
117 Catch::Matchers::WithinAbs( 1.0, 1e-10 ) );
120 std::vector<double> f2s, psd2s;
124 REQUIRE( f2s.size() == 8 );
125 REQUIRE( psd2s.size() == 8 );
127 REQUIRE( f2s[0] == 0 );
128 REQUIRE( f2s[1] == 1 );
129 REQUIRE( f2s[2] == 2 );
130 REQUIRE( f2s[3] == 3 );
131 REQUIRE( f2s[4] == 4 );
132 REQUIRE( f2s[5] == -3 );
133 REQUIRE( f2s[6] == -2 );
134 REQUIRE( f2s[7] == -1 );
137 REQUIRE_THAT( psd2s[0], Catch::Matchers::WithinAbs( psd[0], 1e-12 ) );
138 REQUIRE_THAT( psd2s[1], Catch::Matchers::WithinAbs( 0.5 * psd[1], 1e-12 ) );
139 REQUIRE_THAT( psd2s[2], Catch::Matchers::WithinAbs( 0.5 * psd[2], 1e-12 ) );
140 REQUIRE_THAT( psd2s[3], Catch::Matchers::WithinAbs( 0.5 * psd[3], 1e-12 ) );
141 REQUIRE_THAT( psd2s[4], Catch::Matchers::WithinAbs( psd[4], 1e-12 ) );
142 REQUIRE_THAT( psd2s[5], Catch::Matchers::WithinAbs( 0.5 * psd[3], 1e-12 ) );
143 REQUIRE_THAT( psd2s[6], Catch::Matchers::WithinAbs( 0.5 * psd[2], 1e-12 ) );
144 REQUIRE_THAT( psd2s[7], Catch::Matchers::WithinAbs( 0.5 * psd[1], 1e-12 ) );
147 REQUIRE_THAT(
mx::sigproc::psdVar( f2s, psd2s, 1.0 ), Catch::Matchers::WithinAbs( 1.0, 1e-10 ) );
158TEST_CASE(
"creating a 1D frequency grid",
"[sigproc::psdUtils]" )
160 GIVEN(
"2 sided FFT-order frequency grid" )
164 std::vector<double> f( 10 );
168 REQUIRE_THAT( f[0], Catch::Matchers::WithinAbs( 0, 1e-10 ) );
169 REQUIRE_THAT( f[1], Catch::Matchers::WithinAbs( 0.1, 1e-10 ) );
170 REQUIRE_THAT( f[2], Catch::Matchers::WithinAbs( 0.2, 1e-10 ) );
171 REQUIRE_THAT( f[3], Catch::Matchers::WithinAbs( 0.3, 1e-10 ) );
172 REQUIRE_THAT( f[4], Catch::Matchers::WithinAbs( 0.4, 1e-10 ) );
173 REQUIRE_THAT( f[5], Catch::Matchers::WithinAbs( 0.5, 1e-10 ) );
174 REQUIRE_THAT( f[6], Catch::Matchers::WithinAbs( -0.4, 1e-10 ) );
175 REQUIRE_THAT( f[7], Catch::Matchers::WithinAbs( -0.3, 1e-10 ) );
176 REQUIRE_THAT( f[8], Catch::Matchers::WithinAbs( -0.2, 1e-10 ) );
177 REQUIRE_THAT( f[9], Catch::Matchers::WithinAbs( -0.1, 1e-10 ) );
182 std::vector<double> f( 10 );
186 REQUIRE_THAT( f[0], Catch::Matchers::WithinAbs( 0, 1e-10 ) );
187 REQUIRE_THAT( f[1], Catch::Matchers::WithinAbs( 0.04, 1e-10 ) );
188 REQUIRE_THAT( f[2], Catch::Matchers::WithinAbs( 0.08, 1e-10 ) );
189 REQUIRE_THAT( f[3], Catch::Matchers::WithinAbs( 0.12, 1e-10 ) );
190 REQUIRE_THAT( f[4], Catch::Matchers::WithinAbs( 0.16, 1e-10 ) );
191 REQUIRE_THAT( f[5], Catch::Matchers::WithinAbs( 0.2, 1e-10 ) );
192 REQUIRE_THAT( f[6], Catch::Matchers::WithinAbs( -0.16, 1e-10 ) );
193 REQUIRE_THAT( f[7], Catch::Matchers::WithinAbs( -0.12, 1e-10 ) );
194 REQUIRE_THAT( f[8], Catch::Matchers::WithinAbs( -0.08, 1e-10 ) );
195 REQUIRE_THAT( f[9], Catch::Matchers::WithinAbs( -0.04, 1e-10 ) );
199 GIVEN(
"1 sided frequency grid" )
201 WHEN(
"dt = 1, odd size" )
203 std::vector<double> f( 5 );
207 REQUIRE_THAT( f[0], Catch::Matchers::WithinAbs( 0.1, 1e-10 ) );
208 REQUIRE_THAT( f[1], Catch::Matchers::WithinAbs( 0.2, 1e-10 ) );
209 REQUIRE_THAT( f[2], Catch::Matchers::WithinAbs( 0.3, 1e-10 ) );
210 REQUIRE_THAT( f[3], Catch::Matchers::WithinAbs( 0.4, 1e-10 ) );
211 REQUIRE_THAT( f[4], Catch::Matchers::WithinAbs( 0.5, 1e-10 ) );
214 WHEN(
"dt = 1, even size" )
216 std::vector<double> f( 6 );
220 REQUIRE_THAT( f[0], Catch::Matchers::WithinAbs( 0.0, 1e-10 ) );
221 REQUIRE_THAT( f[1], Catch::Matchers::WithinAbs( 0.1, 1e-10 ) );
222 REQUIRE_THAT( f[2], Catch::Matchers::WithinAbs( 0.2, 1e-10 ) );
223 REQUIRE_THAT( f[3], Catch::Matchers::WithinAbs( 0.3, 1e-10 ) );
224 REQUIRE_THAT( f[4], Catch::Matchers::WithinAbs( 0.4, 1e-10 ) );
225 REQUIRE_THAT( f[5], Catch::Matchers::WithinAbs( 0.5, 1e-10 ) );