+ Antworten
Seite 4 von 4 ErsteErste ... 2 3 4
Ergebnis 31 bis 39 von 39
  1. #31
    Registriert seit
    Apr 2019
    Ort
    Etelsen bei Bremen
    Beiträge
    154

    Hi,
    ist zwar ein alter Post trotzdem wollte ich eine Korrektur vorbringen.

    Zitat Zitat von bbernhard Beitrag anzeigen
    Bsp: Du hast 5 Messwerte mit 18,20,22,20,500. Der 500er Wert ist aber ein Fehler welcher bsp. durch einen Wackelkontakt passiert ist.
    Dieser Ausreißer würde den Mean/Mittelwert komplett verfälschen und du bekämst 112 raus.
    berechnet man aber über die Medianmethode so kriegst du 22 raus.
    Median sollte besser 20 liefern:-) Median nimmt nicht einfach nur den Wert in der Mitte sondern den Wert in der Mitte nachdem sortiert worden ist und das macht die Sache so schwierig.

    Ralf
    IPS 5.3 Unlimited / Docker / Synology DS415+

  2. #32
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    6,370

    Zitat Zitat von HarmonyFan Beitrag anzeigen
    Median nimmt nicht einfach nur den Wert in der Mitte sondern den Wert in der Mitte nachdem sortiert worden ist und das macht die Sache so schwierig.
    Für einen Menschen macht es das sortieren bei großen Datenmengen durchaus schwierig, aber dafür hat man ja einen Computer, dem ist es egal ab er 5 Zahlen sortieren soll oder 50000 Zahlen .
    PHP-Code:
    echo "Median: ".getMedian ([18,20,22,20,500]); 
    function 
    getMedian ($array) { 
    $count count($array);            
    if (
    $count <= 0) return false
    sort($arraySORT_NUMERIC);
    if( 
    $count == ) {
                return ( 
    $array[floor($count/2)-1] + $array[floor($count/2)] ) / 2;
            }
    else {
                return 
    $array[$count/2];
            }


  3. #33
    Registriert seit
    Apr 2019
    Ort
    Etelsen bei Bremen
    Beiträge
    154

    Hi Fonzo,
    kommt auf die Datenmenge an die man filtern will. Ein großer Median über viele Daten kann ein Regelsystem schon stören. 5er oder 7er Median um grobe Ausreißer zu entfernen ist kein Problem.

    Ralf
    IPS 5.3 Unlimited / Docker / Synology DS415+

  4. #34
    Registriert seit
    Apr 2019
    Ort
    Etelsen bei Bremen
    Beiträge
    154

    Hi,
    Zitat Zitat von McHennsy Beitrag anzeigen
    Der Mean ist bei mir um einiges stabiler, als der Median. *grübel*
    auch hier noch eine kleine Ergänzung von mir. Mean ist praktisch ein Filter der "entrauscht", die Kurven werden schön glatt gemacht und sehen einfach schön aus. Median entfernt nur Ausreißer und rauschige Kurven bleiben rauschig und sehen nicht so schön aus. Mathematisch ist das Median-Ergebnis meist ehrlicher als Mean.

    Ralf
    IPS 5.3 Unlimited / Docker / Synology DS415+

  5. #35
    Registriert seit
    Aug 2017
    Beiträge
    12

    Standard Werte in Variable schreiben

    Besten Dank, habe es nun selber hinbekommen.


    PHP-Code:
     <?
    $IDArchiveHandler 
    27158 /*your Archive Handler ID*/;
    $varId 34047 /*Var Id you want to examine*/;
    $interval 300/*Timespan in seconds for Mean/Median Calculation*/;
    $default 0/* default value in case no data capturd */

    echo "Mean: ".getMean ($IDArchiveHandler,$varId,$interval,$default);
    echo 
    chr (13). chr (10);
    echo 
    "Median: ".getMedian ($IDArchiveHandler,$varId,$interval,$default);



    function 
    getMean ($IDArchivehandler,$varId,$log_interval,$default) {
    $logData AC_GetLoggedValues ($IDArchivehandler$varIdtime()- $log_interval,time(),-1);
    if (
    count($logData) <1) return $default;
    foreach (
    $logData as $key => $data)
    {
        
    $value[$key] = $data['Value'];
        
    SetValueFloat(15975array_sum($value)/count($value));
    }
    return 
    array_sum($value)/count($value);
    }

    function 
    getMedian ($IDArchivehandler,$varId,$log_interval,$default) {
    $logData AC_GetLoggedValues ($IDArchivehandler$varIdtime()-$log_interval,time(),-1);
    if (
    count($logData) <1) return $default;
    foreach (
    $logData as $key => $data)
    {
        
    $value[$key] = $data['Value'];
        
    SetValueFloat(20593$value[count($value)/2]);
    }
    asort($value);
    return 
    $value[count($value)/2];
    }

    ?>

  6. #36
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    6,370

    Zitat Zitat von mknee Beitrag anzeigen
    habe es nun selber hinbekommen
    Du sprichst in Deinem Skript den Key des Array an, indem Du fest durch 2 teilst. Das kann funktionieren, wenn die Anzahl des Arrays eben durch 2 teilbar ist. Es kann aber auch schief gehen wenn die Anzahl der Elemente sich nicht durch 2 teilen lässt. Eventuell solltest Du das berücksichtigen s.o.. Wenn Du z.B einen Array aus 3 Werten hast, dann wäre 3/2 = 1,5. Es gibt aber keinen Key mit dem Schlüssel 1,5, der mittlere Schlüssel von 0,1, 2 ist 1.

  7. #37
    Registriert seit
    Aug 2017
    Beiträge
    12

    Hallo Fonzo.

    Da ich noch sehr unerfahren bei der Skript Programmierung und kein Mathematiker bin, habe ich das von bbernhard eingestellte Skript verwendet und so modifiziert, dass ich die Werte in je eine Variable bekomme.
    Ich benötige den Mittelwert zur um Windspitzen für eine Jalousien- Steuerung auszufiltern.
    Ich habe das Ganze auch schon mit diesem Skript versucht, aber die Spitzenwerte werden damit nicht ausgefiltert.


    PHP-Code:
    <?

    $start 
    time() - 300;  // vor 5 Minuten
    $ende  time();  // jetzt  

    $werte AC_GetAggregatedValues(27158340475$start$ende0); 
      
    foreach(
    $werte as $wert)  
         { 
         
    SetValueFloat(49372$wert['Avg']); 
        } 
       

    ?>
    Was kann ich ändern, damit die Daten vom Skript fehlerfrei sind?
    Für Hilfe wäre ich dankbar.

  8. #38
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    6,370

    Zitat Zitat von mknee Beitrag anzeigen
    Ich benötige den Mittelwert zur um Windspitzen für eine Jalousien- Steuerung auszufiltern.
    Das passt schon alles soweit, in Deinem Skript nutzt Du ja die Funktion getMean, das gibt Dir den Mittelwert aus. Meine Anmerkung bezog sich nur auf den Median, also die Funktion getMedian.

  9. #39
    Registriert seit
    Oct 2007
    Ort
    Villach,Kärnten,Österreich
    Beiträge
    2,929

    Zitat Zitat von mknee Beitrag anzeigen
    Ich benötige den Mittelwert zur um Windspitzen für eine Jalousien- Steuerung auszufiltern.
    Ohh der uralte post kommt wieder ans Tageslicht :-)
    Ehrlich gesagt ich habe jetzt nicht mehr alles gelesen, aber bei einer Jalousie Steuerung möchte ich doch gearde die Spitzenwerte haben um rechtzeitig einzfuhren.
    Denn die Windböen machen mir doch meine Jalousie kaputt. Diese wegzubüglen wäre wohl genau das Gegenteil von dem was man erreichen will.
    Oder hält die Jalousie jeden Sturm aus und du möchtest sie aus thermischen Gründen ab einer gewischen Windstärke ausgefahren haben?

    greez
    bb

Ähnliche Themen

  1. Graphendarstellung: Steigend statt Mittelwert
    Von pleibling im Forum WebFront
    Antworten: 2
    Letzter Beitrag: 13.02.14, 14:59
  2. Mittelwert aus zwei DS1820
    Von Borastoni im Forum Skripte, PHP, SQL
    Antworten: 13
    Letzter Beitrag: 22.12.11, 20:55
  3. Wie kann man berechnen ob Tag oder Nacht ist?
    Von mws im Forum Skripte, PHP, SQL
    Antworten: 4
    Letzter Beitrag: 03.10.11, 16:24
  4. Archive: Mittelwert
    Von steiner im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 14
    Letzter Beitrag: 21.07.10, 16:40
  5. Wärmemenge berechnen
    Von Doctor Snuggles im Forum Haustechnik
    Antworten: 5
    Letzter Beitrag: 27.03.06, 21:40