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 -



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  
 



 
- page 3 -



KHR
allô miteinander,

d'abord la fois vielen Dank pour Eure Mühe et sorry, qui je toter homme speile.

je suis momentan beruflich unterwegs et habe par ungünstige Umstände seulement très begrentzen Zugang zum Internet et trop meinem Notebokk, là es durable à qui Anlage eines Kunden hängt et zélé données mitschreiben doit

je melde mich wieder, si je wieder Normalzustand habe.

Dankeschön et belle Grüße
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
09.06.2008  
 




Thomas
Freier
Hmm iF, irgendwie sommes qui Kurven de showdata2.exe pas nachvollziehbar.

 
Gruß Thomas
Windows XP SP2, XProfan X2
11.06.2008  
 



Hat Dein Dateianhang irgendwas avec ShowData2.Exe trop 1faire? (Weil mir cela pas so scheint...)

Bezüglich pas nachvollziehbar - inwiefern?

qui en erzeugten Kurven [...]  .
 
11.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.942 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