частотный анализ — ошибка комплексного значения, вычисление кросс-спектральной плотности (CSD)

Уважаемое сообщество,

Я столкнулся с довольно раздражающей проблемой. Я рассчитываю кросс-спектральную плотность (CSD) между двумя временными сигналами, которые уже были обработаны с помощью FFT для двух комплексных частотных векторов (Singal1 => freqvec, Signal2 => freqvec2).

RowVectorXcd CSD(n_Epochs, fftsize);
for(int j = 0; j < fftsize; j++) {
std::complex<double> cospectrum = freqvec(j).real() *  freqvec2(j).real() +  freqvec(j).imag() * freqvec2(j).imag() ;
std::complex<double> quadspectrum = freqvec(j).real() * freqvec2(j).imag() - freqvec(j).imag() * freqvec2(j).real() ;
std::cout << "cospectrum:"<<cospectrum<< std::endl;
CSD(j) = sqrt( pow( cospectrum, 2 ) + pow( quadspectrum, 2) ) ;

Для дальнейших вычислений мне нужно правильно получить мнимую часть этого расчета.

Расчет работает, но каким-то образом результат всегда имеет мнимое значение ноль.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]