summaryrefslogtreecommitdiff
path: root/epostunit.pas
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-11-08 15:57:29 +0100
committerErich Eckner <git@eckner.net>2017-11-08 15:57:29 +0100
commited8fb9d81bd1778b1b435a0ea4b679330b8372d3 (patch)
treefd7d6842c6d6854754a62bc8e9fff687145a8bd6 /epostunit.pas
parent89f7cb019e80daf82241e7f9b41cef785799c751 (diff)
downloadepost-ed8fb9d81bd1778b1b435a0ea4b679330b8372d3.tar.xz
begonnen, skalierung in separate Funktion auszulagern
Diffstat (limited to 'epostunit.pas')
-rw-r--r--epostunit.pas67
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;