| 155 | |
| 156 | template <class ExpectedSample, class ActualSample> |
| 157 | void CompareComplexData( |
| 158 | const std::vector<std::vector<complex<ExpectedSample>>>& expected, |
| 159 | const std::vector<std::vector<complex<ActualSample>>>& actual, |
| 160 | double tolerance) { |
| 161 | ASSERT_EQ(actual.size(), expected.size()); |
| 162 | for (int i = 0; i < expected.size(); ++i) { |
| 163 | ASSERT_EQ(expected[i].size(), actual[i].size()); |
| 164 | for (int j = 0; j < expected[i].size(); ++j) { |
| 165 | ASSERT_NEAR(real(expected[i][j]), real(actual[i][j]), tolerance) |
| 166 | << ": where i=" << i << " and j=" << j << "."; |
| 167 | ASSERT_NEAR(imag(expected[i][j]), imag(actual[i][j]), tolerance) |
| 168 | << ": where i=" << i << " and j=" << j << "."; |
| 169 | } |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | template <class Sample> |
| 174 | double GetMaximumAbsolute(const std::vector<std::vector<Sample>>& spectrogram) { |