diff options
author | Erich Eckner <git@eckner.net> | 2017-11-08 15:57:29 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-11-08 15:57:29 +0100 |
commit | ed8fb9d81bd1778b1b435a0ea4b679330b8372d3 (patch) | |
tree | fd7d6842c6d6854754a62bc8e9fff687145a8bd6 /epostunit.pas | |
parent | 89f7cb019e80daf82241e7f9b41cef785799c751 (diff) | |
download | epost-ed8fb9d81bd1778b1b435a0ea4b679330b8372d3.tar.xz |
begonnen, skalierung in separate Funktion auszulagern
Diffstat (limited to 'epostunit.pas')
-rw-r--r-- | epostunit.pas | 67 |
1 files changed, 42 insertions, 25 deletions
diff --git a/epostunit.pas b/epostunit.pas index 596180b..5850e49 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -171,6 +171,7 @@ type function extrahiereEinhuellende(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; function extrahierePhase(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; function extrahiereKanten(sT: boolean; f: tMyStringList; threads: longint): boolean; + function skaliere(sT: boolean; f: tMyStringList; threads: longint): boolean; function macheKomplex(sT: boolean; f: tMyStringList; threads: longint): boolean; function berechneIntegral(sT: boolean; f: tMyStringList; threads: longint; quelle: tWerte): boolean; function berechneFFT(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; @@ -183,7 +184,7 @@ type procedure spiegle(threads,tMin,tMax: longint); overload; procedure fuelleMitDummys(sT: boolean); procedure verschiebe(threads: longint; richtung: tInt64Point); - procedure ermittlePhasenWinkel(threads: longint; skalierung: extended); + procedure ermittlePhasenWinkel(threads: longint); procedure fft2dNachbearbeitung(threads: longint; nB: tFFTDatenordnung); procedure schreibeWert(var f: textfile; p: tExtPoint; var letzterWert: extended; entspringen: extended); inline; function exprToFloat(sT: boolean; s: string): extended; @@ -415,8 +416,7 @@ type tPhasenWinkelThread = class(tLogThread) we: tWerte; xMi,xMa: longint; - ska: extended; - constructor create(werte: tWerte; xMin,xMax: longint; skalierung: extended); + constructor create(werte: tWerte; xMin,xMax: longint); procedure stExecute; override; end; tKomplexMachThread = class(tLogThread) @@ -541,9 +541,28 @@ end; function tDatenVorfahr.callBackGetValue(s: string): extended; var - i: longint; + i,j: longint; + t: string; begin result:=nan; + if startetMit('Anstieg"',s,false) then begin + if pos('"',s)=0 then + fehler('Syntaxfehler, ''"'' fehlt!'); + t:=erstesArgument(s,'"'); + if not fileExists(t) then + fehler('Datei '''+t+''' existiert nicht!'); + if startetMit('[',s) then begin + i:=round(exprToFloat(false,erstesArgument(s,','),nil,nil)); + j:=round(exprToFloat(false,erstesArgument(s,']'),nil,nil)); + end + else begin + i:=1; + j:=2; + end; + if s<>'' then + fehler('Syntaxfehler: ''Anstieg...'' hat noch '''+s+''' übrig!'); + result:=ermittleAnstieg(shellExpand(t),i,j); + end; if startetMit('Kontur[',s) or startetMit('Konturen[',s) then begin if pos('].',s)=0 then fehler('Syntaxfehler, '']'' fehlt!'); @@ -4335,13 +4354,13 @@ end; function tWerte.extrahierePhase(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; var - Zeit,pvFehler,xFak,yFak,skalierung: extended; - fensters: array[boolean] of tSin2Fenster; - s: string; - b: boolean; - bekannteBefehle: tMyStringList; - maxPos: tInt64Point; - betraege: tWerte; + Zeit,pvFehler,xFak,yFak: extended; + fensters: array[boolean] of tSin2Fenster; + s: string; + b: boolean; + bekannteBefehle: tMyStringList; + maxPos: tInt64Point; + betraege: tWerte; begin result:=false; Zeit:=now; @@ -4355,7 +4374,6 @@ begin end; xFak:=1; yFak:=1; - skalierung:=1; bekannteBefehle:=tMyStringList.create; repeat if not f.metaReadln(s,true) then begin @@ -4382,10 +4400,6 @@ begin yFak:=kont2diskFak('t',exprToFloat(sT,s)); continue; end; - if istDasBefehl('Skalierung',s,bekannteBefehle,true) then begin - skalierung:=exprToFloat(sT,s); - continue; - end; bekannteBefehle.sort; gibAus('Verstehe Option '''+s+''' nicht beim Extrahieren der Phase!'#10'Ich kenne:'#10+bekannteBefehle.text,3); bekannteBefehle.free; @@ -4449,7 +4463,7 @@ begin gibAus(' (Parseval-Fehler = '+floatToStr(pvFehler)+')',3); gibAus('Phasenwinkel ermitteln ...',3); - ermittlePhasenWinkel(threads,skalierung); + ermittlePhasenWinkel(threads); gibAus('... fertig '+timetostr(now-Zeit),3); result:=true; @@ -4545,6 +4559,11 @@ begin result:=true; end; +function tWerte.skaliere(sT: boolean; f: tMyStringList; threads: longint): boolean; +begin + +end; + function tWerte.macheKomplex(sT: boolean; f: tMyStringList; threads: longint): boolean; var bekannteBefehle: tMyStringList; @@ -5835,7 +5854,7 @@ begin gibAus('Alle Verschiebethreads fertig!',1); end; -procedure tWerte.ermittlePhasenWinkel(threads: longint; skalierung: extended); +procedure tWerte.ermittlePhasenWinkel(threads: longint); var phasenWinkelThreads: array of tPhasenWinkelThread; i: longint; @@ -5850,8 +5869,7 @@ begin tPhasenWinkelThread.create( self, round(i/threads*_xSteps), - round((i+1)/threads*_xSteps-1), - skalierung + round((i+1)/threads*_xSteps-1) ); repeat sleep(10); @@ -7849,13 +7867,12 @@ end; // tPhasenWinkelThread ********************************************************* -constructor tPhasenWinkelThread.create(werte: tWerte; xMin,xMax: longint; skalierung: extended); +constructor tPhasenWinkelThread.create(werte: tWerte; xMin,xMax: longint); begin inherited create; we:=werte; xMi:=xMin; xMa:=xMax; - ska:=skalierung; gibAus('PhasenWinkelThread erzeugt: '+intToStr(xMin)+'-'+intToStr(xMax),1); suspended:=false; end; @@ -7865,11 +7882,11 @@ begin gibAus('PhasenWinkelThread gestartet',1); case we.genauigkeit of gSingle: - we.sWerte.ermittlePhasenWinkel(xMi,xMa,ska); + we.sWerte.ermittlePhasenWinkel(xMi,xMa); gDouble: - we.dWerte.ermittlePhasenWinkel(xMi,xMa,ska); + we.dWerte.ermittlePhasenWinkel(xMi,xMa); gExtended: - we.eWerte.ermittlePhasenWinkel(xMi,xMa,ska); + we.eWerte.ermittlePhasenWinkel(xMi,xMa); end{of case}; gibAus('PhasenWinkelThread beendet',1); end; |