Español
Foro

schnelle Rutina para Durchschnittsbildung de Array gesucht

 
- Página 1 -



KHR
¡Hola miteinander,

.

Yo möchte una große Menge Meßdaten aufbereiten y luego como Kurve(n) darstellen. El Daten voluntad de uno Expediente eingelesen y Arrays zwischengelagert

Um stark flackernde Meßwerte en uno übersichtlichen Kurve darstellen a puede möchte Yo esta encima Durchschnittsbildung beruhigen Das todo se entonces en el fertigen Programa para fünf zahlenreihen ir

Bisher mache Yo el en algo así:

Lo son 5 arrays con 100 elementen Float-Variables , en beginn con 0 gefüllt

Ein Satz Meßwerte se eingelesen, Jedes Array erhält una Element eingetragen

Für cada Array se el Durchschnitt ermittelt,

el jeweiligen Punkte voluntad geplottet

y más es con el nächsten Datensatz Meßwerte.

Desde que bisher el Durchschnitt con mientras que-wend Schleifen errechne, se alles unendlich langsam. Selbst con Profano2cpp dauert lo Minuten a el Schirm vollgekritzelt es.

Hier veces una bastante corto Auszug el Daten como ellos vorliegen. Real haben el Archivos oft encima zehn- oder 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;-----;-----
....
El ersten beiden Spalten Datum y Tiempo son uninteressant, sólo danach gehts correcto los.

Vor lauter Frust encima mi Ideenlosigkeit tener Yo el reciente Codes gelöscht
Sombrero como alguien ne Concepto, como así qué más rápido ir podría??

Bin sólo desafortunadamente doch kein Programmierer pero sólo una Profano-Wurschtler.
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
03.06.2008  
 



 
- Página 2 -



KHR
¡Hola Miteinander,

.

Freut mich, Yo soviel Staub aufgewirbelt habe. Como besteht sí ne echte Chance, Yo ne Solución mein Geschwindigkeitsproblem encontrar bevor Intel una P9 con 34000facher Rechenleistung en el Markt brint.

In el TXT-Expediente son así a el 8000 Datensätze.

Im JPG es dargestellt, qué ahora con mi Programa en Darstellung rauskommt.

Dieses teilweise wirre Gekritzel möchte Yo beruhigen, así Yo ne Kurve bekommen kann.

Jede Linie es ne Datenreihe. Yo habs veces con viel Geduld probiert. Wenn Yo, el Mittelwert de 30 Datensätzen nehme, se lo ya viel mejor, pero son Fälle, como debería uno ya 100 nehmen, así al todo vernünftig abbilden kann.

Also una vez más:

Jeden el Punkte en el abgebildeten Linien möchte Yo por una Mittelwertbildung beruhigen. Jede Linie ha ca 6000 (virtuelle)Punkte, 5 Kurven son dargestellt - also müßte Yo para jede Página 30000 veces por el Mittelwertbildung ir y dazu entonces siempre el Daten correcto bereitstellen

Das beste, Yo con esta Daten en dieser Auflösung geschafft habe, waren incluso con P2CPP 3 Minuten.

Für una Bild wäre el todavía akzeptabel, si uno aber entonces weiterblättern voluntad, Será mejor que te va muy muy langweilig

Übrigens: No daß Ihr denkt, Yo möchte Euch hier libre para media Arbeitgeber einspannen. Neee Neee

Das Programa es una Tool, el Yo para mich y mi Arbeit zusammenbastele. Yo geb lo auch entonces y wann veces nem Kunden más - aber alles libre y just for fun. Como steckt kein Komerz detrás de él sólo mi Faulheit cierto Auswertungen einfacher haben a querer

.

.

913 kB
Hochgeladen:04.06.2008
Ladeanzahl131
Descargar
179 kB
Hochgeladen:04.06.2008
Ladeanzahl135
Descargar
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
04.06.2008  
 




Frank
Abbing

Jede Linie es ne Datenreihe. Yo habs veces con viel Geduld probiert. Wenn Yo, el Mittelwert de 30 Datensätzen nehme, se lo ya viel mejor, pero son Fälle, como debería uno ya 100 nehmen, así al todo vernünftig abbilden kann.


Yo mache gerade Ähnliches. Aunque con weniger Werten y yo verfahre así, drei Werte a una Mittelwert zusammen a rechnen, qué para mi Zwecke ausreichend es.

Un deiner Archivos lasst se por el Listview.dll binnen weniger hundert Millisekunden einlesen. Einmal eingelesen kann ellos para jede Spalte getrennt valor aller Zeilen zusammen rechnen, sodass du ligeramente el Mittelwert forma könntest. Aber du möchstest sí sólo siempre una cierto Anzahl zusammenrechnen... como debería una neue Función her el el hecho.
Andererseits wäre lo sicher mejor el todo Umrechnung sin el Umweg en Dll a hacer, como du el Werte sí sólo visuell darstellen möchtest. Das debería en Ensamblador al schnellsten posible ser, wobei el Hauptproblem el Benutzung de Fliesskommazahlen es. Hier va viel Rechenzeit perdido.
Yo podría dir anbieten mich a uno Assemblerfunktion a versuchen, el du mittels XPIA oder como Dll en dein Programa einbinden könntest. El sería en etwa así aussehen:

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

Rückgabewert wäre el número gebildeter Mittelwerte, el en newdatas# como Longwerte hintereinander geschrieben worden son.

Aus deinen 3 Minuten Berechnungszeit würden entonces schätzungsweise wenige (3-4) Sekunden voluntad.
 
04.06.2008  
 



Mit reinem XProfan komme I 6.2 Sekunden (10652 Datensätze con jeweils 10 Spalten y en incluso dynamischen Tabellenbreite y relativ einfacher aber effektiver Glättung. (siehe Bild)

¿Te ha algo como?

17 kB
Hochgeladen:05.06.2008
Ladeanzahl149
Descargar
 
04.06.2008  
 




Thomas
Freier
@Franco, entonces spende uns pero por favor el Mittelwert-Función uno Spalte (max., min. y Summe haben wir sí ya). Und si posible una Función, el el número el con Werten gefüllten Items uno Spalte ermittelt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
04.06.2008  
 



Hier el Source para Bild...

Beinhaltet una Función createHPicByStats(data$,xx,yy) y liefert una Bildhandle el Statistik zurück. El Ausgabegrösse kann por Pixel xx y yy eingestellt voluntad. Mit el Función puede ser auch a Laufzeit por String solch una Diagramm erzeugen. Im Titel es el número el benötigten Millisekunden.

Orginalcode: [...] 

Ohne xpse
KompilierenMarcaSeparación
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

Wenn Yo ahora bedenke el esta Método auch Spalte 1 y Spalte 2 mitberechnet (aber hier no Pagar findet) entonces podría Yo vorstellen, dass con kleiner Optimierung a diesem Punkt tal vez incluso 4 a 5 en lugar de 6,8 Sekunden erreicht voluntad puede.

@KHR: Como largo benötigt el Algo para el komplette Expediente?

17 kB
Hochgeladen:04.06.2008
Ladeanzahl169
Descargar
913 kB
Hochgeladen:04.06.2008
Ladeanzahl175
Descargar
1.020 kB
Hochgeladen:04.06.2008
Ladeanzahl125
Descargar
 
04.06.2008  
 



He typisch - en mi Notebook con 2,4GHz incluso sólo 6.2 Sekunden, en lugar de como mi DesktopPC con 3,2 GhZ 6.8 Sekunden. Sombrero todavía alguien nen 486dx4/100 herumzugammeln?
 
05.06.2008  
 




Thomas
Freier
Ein rápidamente zusammengestrickter Test una doWhile- Bucle es auch no gerade langsam (hier sólo para 4 Reihen con Mittelwert/sec y una *.dbf) .

856 kB
Hochgeladen:05.06.2008
Ladeanzahl107
Descargar
6 kB
Hochgeladen:05.06.2008
Ladeanzahl153
Descargar
6 kB
Hochgeladen:05.06.2008
Ladeanzahl139
Descargar
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.06.2008  
 



Lo sieht así de como si Usted el Skalen no normalisierst - bekommst el todavía fix instalado?

Und para una Performancevergleich wäre lo imho nötig todos 10 Spalten a beachten. (Das macht mein Ejemplo auch, obwohl lo en Datum y Tiempo natürlich sólo 0 evaluiert y nutzt.)

Also Skalen normalisieren (x y y) y todos Spalten beachten y luego: Dauer preisgeben para Codeperformancevergleich.
 
05.06.2008  
 




Thomas
Freier
@IF: de Zeitgründen Yo lo en 6 Werten belassen. El Hauptzeit se beim Erstellen el *.dbf verbraten. Hier wäre una Vergleich para Listview oder GridBoxen todavía interessant. El Skalierung, si yo ellos correcto hinbekommen habe, kostet ca. 300ms en uno Endzeit de 3734 ms.
Auf mi Rechner mentira beide Anwendungen sicher en gleicher Höhe, si la más 4 Werte dazu kommen.

324 kB
Hochgeladen:05.06.2008
Ladeanzahl89
Descargar
16 kB
Hochgeladen:05.06.2008
Ladeanzahl222
Descargar
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.06.2008  
 



Hm, algo stimmt no con el Normalisierung - el muss automáticamente determinado voluntad para jede Spalte separat. Por ejemplo hast Es usted un schwarze Linie en el Mitte, el es sozuagen no el todo Y-Spektrum adecuado. Un Umrechnung a uno einstellbaren Ausgabegröße fehlt como auch todavía drin. ^ ^
 
05.06.2008  
 




Thomas
Freier
@ IF: el schwarze Linie Es el Temperatur (en fme-300-test.txt es max=64.8° - min=63.9°) . En meiner Skalierung entspricht 1° = 13.9 Punkte. Más Ausschlag kommt como no fuera. Seine Temperaturanzeige va de 44° a 80°. Como hilft sólo una filigranere Grafik como en dir. War pero no mein Ziel .
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.06.2008  
 



Yo sah grad el Yo oben el falschen Code Nuevo hatte, el fue un Vorversion.

Der Orginalcode bajo [...]  war/es sin embargo el richtige.

Yo habe el sin xpse-Code oben korrigiert - ahora stimmts con Exe y Screenshot überein.

KHR hätte lo auffallen necesario.
 
06.06.2008  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

3.817 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie