kann man zwei Fkt. elegant zusammenfassen?



  • Wollte eine Haarwaveletfunktion zusammenfassen, weiß aber nicht wie?

    float TForm1::haarpsi(float m, float n, float t)
    {
     return pow(2,-(m/2))*psi(pow(2,-m)*t-n);
    }
    
    int TForm1::psi(float t)
    {
     if((t>=0)&&(t<0.5))
     {
      return 1;
     }
     else if((t>=0.5)&&(t<1))
     {
      return (-1);
     }
     else
     {
     return 0;
     }
    }
    

    ich würde es besser finden, wenn man sie nicht zerstückelt.



  • Hallo

    also ich finds übersichtlicher so.
    Wenn du das in eine Funktion packst, must du mit Zwischenwerten arbeiten

    /edit : du must diese Funktionen auch nicht als Member von dem Form schreiben.

    bis bald
    akari



  • wenn ich mich nicht vertan hab, müsste es so aussehen.

    inline float haarpsi(float m, float n, float t)
    {
      const float psi = (pow(2, -m) * t) - n;
    
      if ((psi >= 0)   && (psi < 0.5)) return  pow(2, -(m / 2));
      if ((psi >= 0.5) && (psi < 1))   return -pow(2, -(m / 2));
    
      return 0;
    }
    

    liesse sich sogar zu folgendem vereinfachen (haste nur noch einmal den aufruf von pow drin.

    inline float haarpsi(float m, float n, float t)
    {
      const float power = pow(2, -(m / 2));
      const float psi   = (power * power * t) - n;
    
      if ((psi >= 0)   && (psi < 0.5)) return  power;
      if ((psi >= 0.5) && (psi < 1))   return -power; 
    
      return 0;
    }
    


  • Funktionen funktionieren, Vielen Dank!!!



  • Sunday schrieb:

    inline float haarpsi(float m, float n, float t)
    {
      const float power = pow(2, -(m / 2));
      const float psi   = (power * power * t) - n;
    
      if ((psi >= 0)   && (psi < 0.5)) return  power;
      if ((psi >= 0.5) && (psi < 1))   return -power; 
     
      return 0;
    }
    

    ne unbedeutende änderung, würde ich vorlschagen.

    inline float haarpsi(float m, float n, float t)
    {
       const float power = pow(2, -(m / 2));
       const float psi   = (power * power * t) - n;
       if(psi<0) return 0;
       if(psi>=1) return 0;
       if(psi>=.5) 
          return -power;
       else
          return power;
    }
    

Anmelden zum Antworten