沿轴的C ++平均VectorXcd

时间:2017-04-16 09:24:47

标签: c++ vector average eigen connectivity

我是C ++编程的初学者。我尝试使用数组和Eigen模块。现在我遇到了一个问题,我可以在几个小时内解决。也许这是非常基本的,但我迷路了。

QPair<int, double> ConnectivityMeasures::calcImaginaryCoherence(const RowVectorXd& vecFirst, const RowVectorXd& vecSecond, int iNumberEpochs)
{
    Eigen::FFT<double> fft;

    int N = std::max( vecFirst.cols(), vecSecond.cols() ) ;

    //Compute the NFFT
    int b = ceil( log2(2.0 * N - 1) ) ;
    int fftsize = pow(2,b) ;

    //Zero Padding --> Cropping/Extending the Signal to the NFFT size. Cropping=Deleting Values; Extending=Fill up with Zeros
    RowVectorXd xImCohInputVecFirst = RowVectorXd::Zero(fftsize) ;
    xImCohInputVecFirst.head(vecFirst.cols() ) = vecFirst ;

    RowVectorXd xImCohInputVecSecond = RowVectorXd::Zero(fftsize) ;
    xImCohInputVecSecond.head( vecSecond.cols() ) = vecSecond ;

    //FFT for freq domain to both vectors
    RowVectorXcd freqvec ;
    RowVectorXcd freqvec2 ;

    fft.fwd(freqvec, xImCohInputVecFirst) ;
    freqvec.conjugate() ;
    fft.fwd(freqvec2, xImCohInputVecSecond) ;
    freqvec2.conjugate() ;

    // Calculate PowerSpectralDensitiy (PSD) and CrossSpectralDensity(CSD)
    VectorXcd Rxy(iNumberEpochs, fftsize);
    VectorXcd Rxx(iNumberEpochs, fftsize);
    VectorXcd Ryy(iNumberEpochs, fftsize);

    for (int i = 0; i < iNumberEpochs; i++)
    {
        Rxy[i] = sqrt( pow((freqvec[i].real() * freqvec2[i].real() + freqvec[i].imag() * freqvec2[i].imag()), 2 ) + pow((freqvec[i].real() * freqvec2[i].imag() + freqvec[i].imag() * freqvec2[i].real()), 2) );
        Rxx[i] = ( pow(freqvec[i], 2) );
        Ryy[i] = ( pow(freqvec2[i], 2) );
    }




// Average PSD, CSD over the Number of Epochs; not over channels
RowVectorXcd Rxy_mean(freqvec) = Rxy.mean() ;
RowVectorXcd Rxx_mean(freqvec) = Rxx.mean() ;
RowVectorXcd Ryy_mean(freqvec2) = Ryy.mean() ;

所以我的问题从这里开始。我有一个2D数组用于我的Rxy,Rxx和Ryy值。存储类似[时期数,频率数]。

现在我想将每个纪元的所有频率值平均为一个值,并将它们存储为 Rxy_mean,Ryy_mean和Rxx_mean

我的编译器吐出&#39;语法错误:缺少&#34 ;;&#34;之前&#34; =&#34; &#39;

有没有人能说出如何解决这个问题,继续或用一个简单的例子指出我的错误?

提前致谢,     丹尼尔

0 个答案:

没有答案