Commit dfb770a1 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

avoid storing filtered sector signals in the estimator

parent c53da5ec
Loading
Loading
Loading
Loading
+36 −49
Original line number Diff line number Diff line
@@ -868,14 +868,6 @@ void calculate_hodirac_sector_parameters(
    int16_t i_sec, i_bin, i_band;

    float p_real, p_imag, normI, energy, tmp_diff;
    float sec_w_real[NUM_ANA_SECTORS];
    float sec_x_real[NUM_ANA_SECTORS];
    float sec_y_real[NUM_ANA_SECTORS];
    float sec_z_real[NUM_ANA_SECTORS];
    float sec_w_imag[NUM_ANA_SECTORS];
    float sec_x_imag[NUM_ANA_SECTORS];
    float sec_y_imag[NUM_ANA_SECTORS];
    float sec_z_imag[NUM_ANA_SECTORS];

    float sec_I_vec_x[NUM_ANA_SECTORS];
    float sec_I_vec_y[NUM_ANA_SECTORS];
@@ -897,15 +889,6 @@ void calculate_hodirac_sector_parameters(

    for ( i_sec = 0; i_sec < NUM_ANA_SECTORS; i_sec++ )
    {
        float *p_sec_w_real = &sec_w_real[i_sec];
        float *p_sec_x_real = &sec_x_real[i_sec];
        float *p_sec_y_real = &sec_y_real[i_sec];
        float *p_sec_z_real = &sec_z_real[i_sec];

        float *p_sec_w_imag = &sec_w_imag[i_sec];
        float *p_sec_x_imag = &sec_x_imag[i_sec];
        float *p_sec_y_imag = &sec_y_imag[i_sec];
        float *p_sec_z_imag = &sec_z_imag[i_sec];

        float *p_sec_I_vec_x = &sec_I_vec_x[i_sec];
        float *p_sec_I_vec_y = &sec_I_vec_y[i_sec];
@@ -956,27 +939,29 @@ void calculate_hodirac_sector_parameters(
                for ( i_bin = band_grouping[i_band]; i_bin < band_grouping[i_band + 1]; i_bin++ )
                {
                    float w = *( p_c_weights++ );
                    float sec_w_imag, sec_x_imag, sec_y_imag, sec_z_imag;
                    float sec_w_real, sec_x_real, sec_y_real, sec_z_real;

                    *p_sec_w_imag = 1.772454f * *( p_ImagBuffer_0 ) + 1.772454f * *( p_ImagBuffer_1 );
                    *p_sec_x_imag = 1.772454f * *( p_ImagBuffer_3++ ) + 1.023326f * *( p_ImagBuffer_4++ );
                    *p_sec_y_imag = 0.590818f * *( p_ImagBuffer_0++ ) + 1.772454f * *( p_ImagBuffer_1++ ) - 0.590817f * *( p_ImagBuffer_6++ ) - 1.023326f * *( p_ImagBuffer_8++ );
                    *p_sec_z_imag = 1.772454f * *( p_ImagBuffer_2++ ) + 1.023326f * *( p_ImagBuffer_5++ );
                    sec_w_imag = 1.772454f * *( p_ImagBuffer_0 ) + 1.772454f * *( p_ImagBuffer_1 );
                    sec_x_imag = 1.772454f * *( p_ImagBuffer_3++ ) + 1.023326f * *( p_ImagBuffer_4++ );
                    sec_y_imag = 0.590818f * *( p_ImagBuffer_0++ ) + 1.772454f * *( p_ImagBuffer_1++ ) - 0.590817f * *( p_ImagBuffer_6++ ) - 1.023326f * *( p_ImagBuffer_8++ );
                    sec_z_imag = 1.772454f * *( p_ImagBuffer_2++ ) + 1.023326f * *( p_ImagBuffer_5++ );

                    *p_sec_w_real = 1.772454f * *( p_RealBuffer_0 ) + 1.772454f * *( p_RealBuffer_1 );
                    *p_sec_x_real = 1.772454f * *( p_RealBuffer_3++ ) + 1.023326f * *( p_RealBuffer_4++ );
                    *p_sec_y_real = 0.590818f * *( p_RealBuffer_0++ ) + 1.772454f * *( p_RealBuffer_1++ ) - 0.590817f * *( p_RealBuffer_6++ ) - 1.023326f * *( p_RealBuffer_8++ );
                    *p_sec_z_real = 1.772454f * *( p_RealBuffer_2++ ) + 1.023326f * *( p_RealBuffer_5++ );
                    sec_w_real = 1.772454f * *( p_RealBuffer_0 ) + 1.772454f * *( p_RealBuffer_1 );
                    sec_x_real = 1.772454f * *( p_RealBuffer_3++ ) + 1.023326f * *( p_RealBuffer_4++ );
                    sec_y_real = 0.590818f * *( p_RealBuffer_0++ ) + 1.772454f * *( p_RealBuffer_1++ ) - 0.590817f * *( p_RealBuffer_6++ ) - 1.023326f * *( p_RealBuffer_8++ );
                    sec_z_real = 1.772454f * *( p_RealBuffer_2++ ) + 1.023326f * *( p_RealBuffer_5++ );

                    p_real = *p_sec_w_real * w;
                    p_imag = *p_sec_w_imag * w;
                    p_real = sec_w_real * w;
                    p_imag = sec_w_imag * w;

                    *p_sec_I_vec_x += p_real * *p_sec_x_real + p_imag * *p_sec_x_imag;
                    *p_sec_I_vec_y += p_real * *p_sec_y_real + p_imag * *p_sec_y_imag;
                    *p_sec_I_vec_z += p_real * *p_sec_z_real + p_imag * *p_sec_z_imag;
                    *p_sec_I_vec_x += p_real * sec_x_real + p_imag * sec_x_imag;
                    *p_sec_I_vec_y += p_real * sec_y_real + p_imag * sec_y_imag;
                    *p_sec_I_vec_z += p_real * sec_z_real + p_imag * sec_z_imag;

                    energy += 0.5f * ( p_real * p_real + p_imag * p_imag + *p_sec_x_real * *p_sec_x_real + *p_sec_x_imag * *p_sec_x_imag +
                                       *p_sec_y_real * *p_sec_y_real + *p_sec_y_imag * *p_sec_y_imag +
                                       *p_sec_z_real * *p_sec_z_real + *p_sec_z_imag * *p_sec_z_imag );
                    energy += 0.5f * ( p_real * p_real + p_imag * p_imag + sec_x_real * sec_x_real + sec_x_imag * sec_x_imag +
                                       sec_y_real * sec_y_real + sec_y_imag * sec_y_imag +
                                       sec_z_real * sec_z_real + sec_z_imag * sec_z_imag );
                }
            }
            else
@@ -984,27 +969,29 @@ void calculate_hodirac_sector_parameters(
                for ( i_bin = band_grouping[i_band]; i_bin < band_grouping[i_band + 1]; i_bin++ )
                {
                    float w = *( p_c_weights++ );
                    float sec_w_imag, sec_x_imag, sec_y_imag, sec_z_imag;
                    float sec_w_real, sec_x_real, sec_y_real, sec_z_real;

                    *p_sec_w_imag = 1.772454f * *(p_ImagBuffer_0) -1.772454f * *( p_ImagBuffer_1 );
                    *p_sec_x_imag = 1.772454f * *( p_ImagBuffer_3++ ) - 1.023326f * *( p_ImagBuffer_4++ );
                    *p_sec_y_imag = -0.590818f * *( p_ImagBuffer_0++ ) + 1.772454f * *( p_ImagBuffer_1++ ) + 0.590817f * *( p_ImagBuffer_6++ ) + 1.023326f * *( p_ImagBuffer_8++ );
                    *p_sec_z_imag = 1.772454f * *( p_ImagBuffer_2++ ) - 1.023326f * *( p_ImagBuffer_5++ );
                    sec_w_imag = 1.772454f * *(p_ImagBuffer_0) -1.772454f * *( p_ImagBuffer_1 );
                    sec_x_imag = 1.772454f * *( p_ImagBuffer_3++ ) - 1.023326f * *( p_ImagBuffer_4++ );
                    sec_y_imag = -0.590818f * *( p_ImagBuffer_0++ ) + 1.772454f * *( p_ImagBuffer_1++ ) + 0.590817f * *( p_ImagBuffer_6++ ) + 1.023326f * *( p_ImagBuffer_8++ );
                    sec_z_imag = 1.772454f * *( p_ImagBuffer_2++ ) - 1.023326f * *( p_ImagBuffer_5++ );

                    *p_sec_w_real = 1.772454f * *(p_RealBuffer_0) -1.772454f * *( p_RealBuffer_1 );
                    *p_sec_x_real = 1.772454f * *( p_RealBuffer_3++ ) - 1.023326f * *( p_RealBuffer_4++ );
                    *p_sec_y_real = -0.590818f * *( p_RealBuffer_0++ ) + 1.772454f * *( p_RealBuffer_1++ ) + 0.590817f * *( p_RealBuffer_6++ ) + 1.023326f * *( p_RealBuffer_8++ );
                    *p_sec_z_real = 1.772454f * *( p_RealBuffer_2++ ) - 1.023326f * *( p_RealBuffer_5++ );
                    sec_w_real = 1.772454f * *(p_RealBuffer_0) -1.772454f * *( p_RealBuffer_1 );
                    sec_x_real = 1.772454f * *( p_RealBuffer_3++ ) - 1.023326f * *( p_RealBuffer_4++ );
                    sec_y_real = -0.590818f * *( p_RealBuffer_0++ ) + 1.772454f * *( p_RealBuffer_1++ ) + 0.590817f * *( p_RealBuffer_6++ ) + 1.023326f * *( p_RealBuffer_8++ );
                    sec_z_real = 1.772454f * *( p_RealBuffer_2++ ) - 1.023326f * *( p_RealBuffer_5++ );

                    p_real = *p_sec_w_real * w;
                    p_imag = *p_sec_w_imag * w;
                    p_real = sec_w_real * w;
                    p_imag = sec_w_imag * w;

                    *p_sec_I_vec_x += p_real * *p_sec_x_real + p_imag * *p_sec_x_imag;
                    *p_sec_I_vec_y += p_real * *p_sec_y_real + p_imag * *p_sec_y_imag;
                    *p_sec_I_vec_z += p_real * *p_sec_z_real + p_imag * *p_sec_z_imag;
                    *p_sec_I_vec_x += p_real * sec_x_real + p_imag * sec_x_imag;
                    *p_sec_I_vec_y += p_real * sec_y_real + p_imag * sec_y_imag;
                    *p_sec_I_vec_z += p_real * sec_z_real + p_imag * sec_z_imag;

                    energy += 0.5f * ( p_real * p_real + p_imag * p_imag + *p_sec_x_real * *p_sec_x_real + *p_sec_x_imag * *p_sec_x_imag +
                                       *p_sec_y_real * *p_sec_y_real + *p_sec_y_imag * *p_sec_y_imag +
                                       *p_sec_z_real * *p_sec_z_real + *p_sec_z_imag * *p_sec_z_imag );
                    energy += 0.5f * ( p_real * p_real + p_imag * p_imag + sec_x_real * sec_x_real + sec_x_imag * sec_x_imag +
                                       sec_y_real * sec_y_real + sec_y_imag * sec_y_imag +
                                       sec_z_real * sec_z_real + sec_z_imag * sec_z_imag );
                }
            }