Français
Forum

schnelle Routine pour Durchschnittsbildung aus Array gesucht

 
- page 1 -



KHR
allô miteinander,

.

je voudrais une grand la quantité Meßdaten aufbereiten et ensuite comme Kurve(n) représenter. qui données volonté aus einer Dossier lire et dans Arrays zwischengelagert

Um stark flackernde Meßwerte dans einer übersichtlichen Kurve représenter trop peut voudrais je cet sur Durchschnittsbildung beruhigen cela ganze soll ensuite im fertigen Programme pour cinq zahlenreihen aller

Bisher fais je cela dans quelque chose so:

il y a 5 arrays avec 100 elementen Float-Variablen , chez beginn avec 0 pleine

un phrase Meßwerte wird lire, chaque Array erhält un Element eingetragen

Pour chaque Array wird qui Durchschnitt ermittelt,

qui jeweiligen Punkte volonté geplottet

et plus ca va avec dem prochain Datensatz Meßwerte.

là je bisher den Durchschnitt avec tandis que-Wend Schleifen errechne, wird alles unendlich lente. Selbst avec Profan2cpp dauert es Minuten jusqu'à qui Schirm vollgekritzelt ist.

ici la fois un entier court Auszug qui données comment vous vorliegen. réel avons qui Fichiers souvent sur dix- ou bien gar zwanzigtausend Datensätze (Zeilen)

25.07.2007;08:22:53;1874;63.3;0.019387;0.023140;0.024151;0.022312;-----;-----
25.07.2007;08:22:54;1871;63.3;0.028538;0.022725;0.025337;0.022793;-----;-----
25.07.2007;08:22:55;1914;63.3;0.024311;0.023610;0.022366;0.022739;-----;-----
25.07.2007;08:22:56;1889;63.3;0.021887;0.023453;0.019952;0.022303;-----;-----
25.07.2007;08:22:57;1895;63.3;0.027712;0.023644;0.021144;0.022193;-----;-----
25.07.2007;08:22:58;1902;63.3;0.023383;0.023765;0.022752;0.022195;-----;-----
25.07.2007;08:22:59;1891;63.3;0.026178;0.023538;0.022319;0.022224;-----;-----
25.07.2007;08:23:00;1912;63.3;0.024255;0.023965;0.021904;0.022195;-----;-----
25.07.2007;08:23:01;1898;63.3;0.021041;0.023673;0.024442;0.022237;-----;-----
25.07.2007;08:23:02;1895;63.3;0.024243;0.023550;0.022202;0.022322;-----;-----
25.07.2007;08:23:03;1919;63.3;0.029875;0.023874;0.022494;0.022521;-----;-----
25.07.2007;08:23:04;1930;63.3;0.027768;0.024126;0.022018;0.022461;-----;-----
25.07.2007;08:23:05;1914;63.3;0.020411;0.023905;0.020469;0.022334;-----;-----
25.07.2007;08:23:06;1915;63.3;0.027465;0.023837;0.023016;0.022474;-----;-----
25.07.2007;08:23:07;1924;63.3;0.020727;0.023959;0.023631;0.022536;-----;-----
25.07.2007;08:23:08;1891;63.3;0.020876;0.023436;0.021933;0.022374;-----;-----
25.07.2007;08:23:09;1867;63.3;0.020627;0.023159;0.020591;0.022087;-----;-----
....
qui ersten beiden Spalten date et Zeit sommes uninteressant, seulement après gehts richtig à l'attaque.

avant lauter Frust sur mon Ideenlosigkeit hab je qui bisherigen Codes gelöscht
Hat là quelqu'un ne concept, comment so quoi plus rapide aller pourrait??

suis arrêt malheureusement doch ne...aucune Programmierer mais seulement un Profan-Wurschtler.
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
03.06.2008  
 



 
- page 2 -



KHR
allô Miteinander,

.

Freut mich, qui je soviel Staub aufgewirbelt habe. là besteht oui ne echte chance, qui je ne Solution mon Geschwindigkeitsproblem trouver bevor Intel une P9 avec 34000facher Rechenleistung sur den marché brint.

dans qui TXT-Dossier sommes so à qui 8000 Datensätze.

Im JPG ist dargestellt, quoi maintenant avec meinem Programme chez qui représentation rauskommt.

cet partiellement wirre Gekritzel voudrais je beruhigen, si bien que je ne Kurve bekommen peux.

chacun ligne number ist ne Datenreihe. je habs la fois avec viel patience probiert. si Je l' Mittelwert aus 30 Datensätzen nehme, wird es déjà viel besser, mais il y a Fälle, là sollte on déjà 100 prendre, avec cela on cela ganze vernünftig figurer peux.

alors encore la fois:

Jeden qui Punkte sur den abgebildeten Linien voudrais je par une Mittelwertbildung beruhigen. chacun ligne number hat ca 6000 (virtuelle)Punkte, 5 Kurven sommes dargestellt - alors devrait je pour chacun page 30000 la fois par qui Mittelwertbildung aller et en supplément ensuite encore toujours qui données richtig bereitstellen

cela beste, quoi je avec cette données dans cette Auflösung geschafft habe, étions sogar avec P2CPP 3 Minuten.

Pour un Bild wäre le reste akzeptabel, si on mais ensuite encore weiterblättern veux, wirds très très fastidieux

Incidemment: pas qui son denkt, je voudrais Euch ici kostenlos pour meinen Arbeitgeber einspannen. Neee Neee

cela Programme est un Tool, le moi pour mich et mon travail zusammenbastele. je geb es aussi ensuite et quand la fois nem Kunden plus - mais alles kostenlos et just for fun. là steckt ne...aucune Komerz derrière elle seulement mon paresse bestimmte Auswertungen einfacher avons trop voulons

.

.

913 kB
Hochgeladen:04.06.2008
Downloadcounter131
Download
179 kB
Hochgeladen:04.06.2008
Downloadcounter135
Download
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
04.06.2008  
 




Frank
Abbing

chacun ligne number ist ne Datenreihe. je habs la fois avec viel patience probiert. si Je l' Mittelwert aus 30 Datensätzen nehme, wird es déjà viel besser, mais il y a Fälle, là sollte on déjà 100 prendre, avec cela on cela ganze vernünftig figurer peux.


je fais justement Ähnliches. Allerdings avec moins Werten et je verfahre so, trois Werte trop einem Mittelwert zusammen trop le calcul, quoi pour mon Zwecke ausreichend ist.

une deiner Fichiers lasst sich par qui Listview.dll binnen moins hundert Millisekunden einlesen. Einmal lire peux vous pour chacun Spalte getrennt la valeur aller Zeilen zusammen le calcul, sodass du léger den Mittelwert bilden könntest. mais du möchstest oui seulement toujours une bestimmte Anzahl zusammenrechnen... là devrait une neue Funktion her qui cela erledigt.
Andererseits wäre es sûrement besser qui ganze change sans den le détour sur qui Dll trop faire, là du qui Werte oui seulement visuell représenter vouloir. cela sollte dans Assembler am schnellsten possible son, wobei cela Hauptproblem qui Benutzung de Fliesskommazahlen ist. ici allez viel Rechenzeit verloren.
je pourrait dir anbieten mich à einer Assemblerfunktion trop versuchen, qui du mittels XPIA ou bien comme Dll dans dein Programme einbinden könntest. qui serait dans etwa so air:

Mediate(datenfile#, newdatas#, spalte&, anzahlmittlungsdaten&)

Rückgabewert wäre le nombre gebildeter Mittelwerte, qui dans newdatas# comme Longwerte hintereinander geschrieben worden sommes.

Aus deinen 3 Minuten Berechnungszeit würden ensuite schätzungsweise wenige (3-4) Sekunden volonté.
 
04.06.2008  
 



avec reinem XProfan viens je sur 6.2 Sekunden (10652 Datensätze avec jeweils 10 Spalten et chez sogar dynamischen Tabellenbreite et relativ einfacher mais effektiver Glättung. (siehe Bild)

Avez- Du quelque chose comme?

17 kB
Hochgeladen:05.06.2008
Downloadcounter149
Download
 
04.06.2008  
 




Thomas
Freier
@Frank, ensuite spende uns doch s'il te plaît qui Mittelwert-Funktion einer Spalte (max., min. et somme avons wir oui déjà). et si possible une Funktion, qui le nombre qui avec Werten gefüllten Items einer Spalte ermittelt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
04.06.2008  
 



ici qui Source zum Bild...

Beinhaltet une Funktion createHPicByStats(data$,xx,yy) et liefert un Bildhandle qui Statistik zurück. qui Ausgabegrösse peux per Pixel xx et yy eingestellt volonté. avec qui Funktion peux on aussi zur Laufzeit per String solch un Diagramm erzeugen. Im Titel steht le nombre qui nécessaire Millisekunden.

Orginalcode: [...] 

sans xpse
KompilierenMarqueSéparation
WINDOW 100,100 - 700,500
CLS $888888
var TME&=&GETTICKCOUNT
var HPIC&=CREATEHPICBYSTATS(FILE_GET_CONTENTS(fme-300-test.txt),600,420)
SETTEXT %HWND,STR$(&GETTICKCOUNT-TME&)+ ms
DRAWPIC HPIC&,10,10;0
USERMESSAGES $0014

WHILE 1

    WAITINPUT

ENDWHILE

end

proc CREATEHPICBYSTATS

    PARAMETERS S$,XX&,YY&
    DECLARE LN$[],HDR$[],ENTI$[]
    LN$[]=EXPLODE(S$+
    ,
    )
    var C&=SIZEOF(LN$[])
    HDR$[]=EXPLODE(LN$[0],;)
    var HDRC&=SIZEOF(HDR$[])
    var F!=0
    var F2!=0
    DECLARE VMIN![HDRC&],VMAX![HDRC&],V![HDRC&,C&],VMM![HDRC&],COL&[IF(HDRC&>7,HDRC&,8)],COLB&[HDRC&],OLDF![HDRC&]
    MAT VMIN![]=999999999999999
    MAT VMAX![]=-999999999999999
    DEC HDRC&
    DEC C&
    COL&[0]=$FF0000
    COL&[1]=$00FF00
    COL&[2]=$0000FF
    COL&[3]=$880000
    COL&[4]=$008800
    COL&[5]=$000088
    COL&[6]=$FF8800
    COL&[7]=$00FF88
    var CL&=0

    WHILE 1

        INC CL&

        IFNOT CL&<C&

            BREAK

        ENDIF

        ENTI$[]=EXPLODE(LN$[CL&],;)
        SETSIZE ENTI$[],HDRC&+1

        WHILELOOP 0,HDRC&

            F!=VAL(ENTI$[&LOOP])
            V![&LOOP,CL&]=F!

            IF VMIN![&LOOP]>F!

                VMIN![&LOOP]=F!

            ENDIF

            IF VMAX![&LOOP]<F!

                VMAX![&LOOP]=F!

            ENDIF

        ENDWHILE

    ENDWHILE

    var I&=0
    var A!=0

    WHILELOOP 0,HDRC&

        VMM![&LOOP]=(VMAX![&LOOP]-VMIN![&LOOP])
        A!=V![&LOOP,1]
        F!=VMM![&LOOP]

        IF F!=0

            CONTINUE

        ENDIF

        F2!=A!-VMIN![&LOOP]

        IF F2!=0

            CONTINUE

        ENDIF

        OLDF![&LOOP]=(F2!/F!*YY&)

    ENDWHILE

    var Y!=0
    var HOP!=C&/XX&
    var XH!=1
    var YYHOP!=YY&*0.1
    var X&=0
    var HPIC&=CREATE(hNewPic,XX&,YY&,$FFFFFF)
    STARTPAINT HPIC&

    WHILE 1

        INC X&

        WHILELOOP 0,HDRC&

            F!=VMM![&LOOP]

            IFNOT F!=0

                F2!=V![&LOOP,XH!]-VMIN![&LOOP]

                IFNOT F2!=0

                    F!=(OLDF![&LOOP]*0.9)+(F2!/F!*YYHOP!)

                ELSE

                    F!=(OLDF![&LOOP]*0.9)

                ENDIF

                USEPEN 0,0,COL&[&LOOP]
                LINE (X&-1),(YY&-OLDF![&LOOP]) - (X&),(YY&-F!)
                OLDF![&LOOP]=F!

            ENDIF

        ENDWHILE

        XH!=XH!+HOP!

        IF XH!>C&

            BREAK

        ENDIF

    ENDWHILE

    ENDPAINT
    RETURN HPIC&

endproc

proc FILE_GET_CONTENTS

    PARAMETERS FLE$
    var B&=FILESIZE(FLE$)

    IF B&<1

        RETURN

    ENDIF

    DECLARE MEM#
    DIM MEM#,B&
    var R&=BLOCKREAD(FLE$,MEM#,0,B&)
    var S$=CHAR$(MEM#,0,R&)
    DISPOSE MEM#
    RETURN S$

endproc

proc FILE_PUT_CONTENTS

    PARAMETERS FLE$,S$
    var L&=LEN(S$)

    IF L&=0

        var FH&=ASSIGN(FLE$)
        REWRITE FH&
        CLOSE FH&
        ASSIGN FH&,
        RETURN

    ENDIF

    DECLARE MEM#
    DIM MEM#,L&+1
    STRING MEM#,0=S$
    BLOCKWRITE FLE$,MEM#,0,L&
    DISPOSE MEM#

endproc

proc RGB.MIX

    PARAMETERS COL1&,COL2&,TRANSL!
    RETURN RGB(GETRVALUE(COL1&)*(1-TRANSL!)+GETRVALUE(COL2&)*(TRANSL!),GETGVALUE(COL1&)*(1-TRANSL!)+GETGVALUE(COL2&)*(TRANSL!),GETBVALUE(COL1&)*(1-TRANSL!)+GETBVALUE(COL2&)*(<
TRANSL!)) endproc end

si je maintenant bedenke cela cet Methode aussi Spalte 1 et Spalte 2 mitberechnet (mais ici aucun payons findet) ensuite pourrait je mir présenter, dass avec kleiner Optimierung trop diesem Punkt peut-être sogar 4 jusqu'à 5 statt 6,8 Sekunden erreicht volonté peut.

@KHR: comment longtemps nécessaire qui Algo pour qui komplette Dossier?

17 kB
Hochgeladen:04.06.2008
Downloadcounter169
Download
913 kB
Hochgeladen:04.06.2008
Downloadcounter175
Download
1.020 kB
Hochgeladen:04.06.2008
Downloadcounter125
Download
 
04.06.2008  
 



hé typisch - sur meinem Notebook avec 2,4GHz sogar seulement 6.2 Sekunden, statt aussi meinem DesktopPC avec 3,2 GhZ 6.8 Sekunden. Hat encore quelqu'un nen 486dx4/100 herumzugammeln?
 
05.06.2008  
 




Thomas
Freier
un vite zusammengestrickter Test sur une doWhile- Boucle ist aussi pas justement lente (ici seulement pour 4 Reihen avec Mittelwert/sec et sur une *.dbf) .

856 kB
Hochgeladen:05.06.2008
Downloadcounter107
Download
6 kB
Hochgeladen:05.06.2008
Downloadcounter153
Download
6 kB
Hochgeladen:05.06.2008
Downloadcounter141
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.06.2008  
 



Es sieht so aus comme si Du qui Skalen pas normalisierst - bekommst le reste fix incorporé?

et pour une Performancevergleich wäre es imho nötig alle 10 Spalten trop tenir compte de. (cela fait mon Beispiel aussi, quoique es chez date et Zeit naturellement seulement 0 evaluiert et utilise.)

alors Skalen normalisieren (x et y) et alle Spalten tenir compte de et ensuite: la durée preisgeben pour Codeperformancevergleich.
 
05.06.2008  
 




Thomas
Freier
@iF: aus Zeitgründen habe je es chez 6 Werten belassen. qui Hauptzeit wird beim Erstellen qui *.dbf verbraten. ici wäre un comparaison zum Listview ou bien GridBoxen encore intéressant. qui Skalierung, si je vous richtig hinbekommen habe, kostet ca. 300ms chez einer Endzeit de 3734 ms.
sur meinem calculateur liegen beide Anwendungen sûrement sur gleicher Hauteur, si le weiteren 4 Werte en supplément venons.

324 kB
Hochgeladen:05.06.2008
Downloadcounter89
Download
16 kB
Hochgeladen:05.06.2008
Downloadcounter222
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.06.2008  
 



Hm, irgendwas stimmt pas avec qui Normalisierung - qui muss automatisch bestimmt volonté pour chacun Spalte separat. Beispielsweise la hâte Vous schwarze ligne number dans qui Mitte, qui ist sozuagen pas sur cela ganze Y-Spektrum angezeigt. une change zur einer einstellbaren Ausgabegröße fehlt là aussi encore drin. ^ ^
 
05.06.2008  
 




Thomas
Freier
@ iF: qui schwarze ligne number ist qui température (dans fme-300-test.txt ist max=64.8° - min=63.9°) . chez meiner Skalierung entspricht 1° = 13.9 Punkte. plus Ausschlag venez là pas raus. sa Temperaturanzeige allez de 44° jusqu'à 80°. là hilft seulement une filigranere Grafik comment chez dir. était mais pas mon but .
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.06.2008  
 



je sah grad le moi dessus den falschen Code posté hatte, cela était un Vorversion.

qui Orginalcode sous [...]  était/ist cependant qui richtige.

j'ai den sans xpse-Code dessus korrigiert - maintenant stimmts avec Exe et Screenshot überein.

KHR hätte es auffallen doit.
 
06.06.2008  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.974 Views

Untitledvor 0 min.
H.Brill24.04.2023
Jörg Sellmeyer30.05.2018
iF06.11.2014
Michael Wodrich26.02.2014
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie