ich kapier das nicht



  • Hallo,
    ich habe eine Funktion

    void Power(Double_t* real, Double_t* imag, Int_t mm, Double_t*& betr)
    {
      for(Int_t n=0; n<mm; n++) 
        {
           betr[n]= 10*log10(2*((real[n]*real[n])+(imag[n]*imag[n]))/(Double_t)(mm*mm));    
        }
    }
    

    die ich aus dem Programm heraus dreimal aufrufen moechte. Allerdings gibt mir das Programm dann nur Muell heraus. Wenn ich allerdings die Funktion nur zweimal aufrufe und das dritte Mal innerhalb des Programms berechne

    for (n=0; n<(NN/2+1); n++)
    {
      F_num2_betr[n]= 10*log10(2*((F_num2_real[n]*F_num2_real[n])+(F_num2_imag[n]*F_num2_imag[n]))/(Double_t)(mm*mm));
    }
    
    // Power(F_num2_real, F_num2_imag, (NN/2+1), F_num2_betr);
    Power(F_ampl_real, F_ampl_imag, (MM/2+1), F_ampl_betr);
    Power(F_trans_real, F_trans_imag, (MM/2+1), F_trans_betr);
    

    dann laeuft es einwandfrei.
    Kann mir irgendjemand sagen, wo der Haken bei der Sache ist.



  • ich denke, dass liegt irgendwie an deinem 'mm*mm'

    Wenn du die Funktion aufrufst, würde da '(NN/2+1)(NN/2+1)' stehen und nicht mmmm

    Überprüf das mal...



  • Stimmt, das war ein Fehler, den ich jetzt behoben habe, danke!
    Leider klappt es aber immer noch nicht.



  • ich finde den fehler auch nicht, aber die folgende stelle in deinem code finde ich befremdlich:

    ..., Double_t*& betr, ...
    

    sollte es nicht Double_t betr* heißen 😕

    vielleicht liegts ja daran...


Anmelden zum Antworten