summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epost.lps167
-rw-r--r--epostunit.pas191
-rw-r--r--werteunit.pas18
3 files changed, 208 insertions, 168 deletions
diff --git a/epost.lps b/epost.lps
index 8861f1a..7d1fc7f 100644
--- a/epost.lps
+++ b/epost.lps
@@ -7,8 +7,8 @@
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
- <TopLine Value="158"/>
- <CursorPos X="60" Y="173"/>
+ <TopLine Value="376"/>
+ <CursorPos Y="398"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit0>
@@ -22,9 +22,10 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="6934"/>
- <CursorPos Y="6947"/>
+ <TopLine Value="3928"/>
+ <CursorPos Y="3957"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
@@ -39,8 +40,8 @@
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="7"/>
- <TopLine Value="1424"/>
- <CursorPos X="21" Y="1439"/>
+ <TopLine Value="2005"/>
+ <CursorPos Y="2022"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
@@ -48,7 +49,8 @@
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="9"/>
- <CursorPos X="44" Y="17"/>
+ <TopLine Value="1232"/>
+ <CursorPos X="32" Y="1250"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit5>
@@ -56,8 +58,8 @@
<Filename Value="../units/fftunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="3"/>
- <CursorPos X="3" Y="13"/>
- <UsageCount Value="199"/>
+ <CursorPos X="100" Y="13"/>
+ <UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
@@ -66,7 +68,7 @@
<EditorIndex Value="4"/>
<TopLine Value="162"/>
<CursorPos X="12" Y="191"/>
- <UsageCount Value="196"/>
+ <UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
@@ -74,7 +76,7 @@
<IsPartOfProject Value="True"/>
<EditorIndex Value="8"/>
<CursorPos X="35" Y="10"/>
- <UsageCount Value="102"/>
+ <UsageCount Value="109"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
@@ -82,42 +84,42 @@
<EditorIndex Value="-1"/>
<TopLine Value="1612"/>
<CursorPos X="2" Y="1675"/>
- <UsageCount Value="6"/>
+ <UsageCount Value="5"/>
</Unit9>
<Unit10>
<Filename Value="../units/mystringlistunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="638"/>
<CursorPos X="58" Y="660"/>
- <UsageCount Value="8"/>
+ <UsageCount Value="7"/>
</Unit10>
<Unit11>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="6"/>
- <TopLine Value="10"/>
- <UsageCount Value="81"/>
+ <TopLine Value="580"/>
+ <CursorPos X="18" Y="615"/>
+ <UsageCount Value="84"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
<Filename Value="../units/randomunit.pas"/>
<EditorIndex Value="-1"/>
- <UsageCount Value="6"/>
+ <UsageCount Value="5"/>
</Unit12>
<Unit13>
<Filename Value="../units/matheunit.pas"/>
<EditorIndex Value="5"/>
- <TopLine Value="789"/>
- <CursorPos Y="800"/>
- <UsageCount Value="55"/>
+ <TopLine Value="47"/>
+ <CursorPos X="26" Y="75"/>
+ <UsageCount Value="58"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
<Filename Value="../units/systemunit.pas"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="2"/>
- <TopLine Value="198"/>
- <CursorPos X="11" Y="226"/>
- <UsageCount Value="10"/>
+ <TopLine Value="126"/>
+ <CursorPos X="7" Y="147"/>
+ <UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
@@ -125,41 +127,41 @@
<EditorIndex Value="-1"/>
<TopLine Value="182"/>
<CursorPos X="21" Y="202"/>
- <UsageCount Value="9"/>
+ <UsageCount Value="8"/>
</Unit15>
<Unit16>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxovlh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="61"/>
<CursorPos X="10" Y="99"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit16>
<Unit17>
<Filename Value="/usr/lib/fpc/src/rtl/unix/baseunix.pp"/>
<UnitName Value="BaseUnix"/>
<EditorIndex Value="-1"/>
<TopLine Value="61"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit17>
<Unit18>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxovl.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="414"/>
<CursorPos X="20" Y="434"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit18>
<Unit19>
<Filename Value="/usr/lib/fpc/src/rtl/linux/bunxsysc.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="16"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit19>
<Unit20>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="74"/>
<CursorPos X="15" Y="102"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit20>
<Unit21>
<Filename Value="/usr/lib/fpc/src/packages/fcl-image/src/fpimage.pp"/>
@@ -167,168 +169,169 @@
<EditorIndex Value="-1"/>
<TopLine Value="10"/>
<CursorPos X="3" Y="30"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit21>
<Unit22>
<Filename Value="../fpGUI/src/corelib/render/software/agg_basics.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="327"/>
<CursorPos X="12" Y="347"/>
- <UsageCount Value="10"/>
+ <UsageCount Value="9"/>
</Unit22>
<Unit23>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/classes/classesh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="673"/>
<CursorPos X="42" Y="705"/>
- <UsageCount Value="10"/>
+ <UsageCount Value="9"/>
</Unit23>
<Unit24>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/math.pp"/>
<EditorIndex Value="-1"/>
<TopLine Value="166"/>
<CursorPos X="10" Y="183"/>
- <UsageCount Value="8"/>
+ <UsageCount Value="7"/>
</Unit24>
<Unit25>
<Filename Value="GTIWebServerTestAggActionHandlerUnit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="53"/>
<CursorPos X="49" Y="82"/>
- <UsageCount Value="8"/>
+ <UsageCount Value="7"/>
</Unit25>
<Unit26>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/sysutils/sysstrh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="204"/>
<CursorPos X="18" Y="222"/>
- <UsageCount Value="10"/>
+ <UsageCount Value="9"/>
</Unit26>
<Unit27>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/sysutils/osutilsh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="9"/>
<CursorPos X="10" Y="26"/>
- <UsageCount Value="10"/>
+ <UsageCount Value="9"/>
</Unit27>
</Units>
- <JumpHistory Count="29" HistoryIndex="28">
+ <JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="epostunit.pas"/>
- <Caret Line="422" Column="24" TopLine="404"/>
+ <Caret Line="4185" Column="16" TopLine="4156"/>
</Position1>
<Position2>
<Filename Value="epostunit.pas"/>
- <Caret Line="7833" Column="12" TopLine="7824"/>
</Position2>
<Position3>
<Filename Value="epostunit.pas"/>
- <Caret Line="338" Column="16" TopLine="320"/>
+ <Caret Line="194" Column="24" TopLine="166"/>
</Position3>
<Position4>
<Filename Value="epostunit.pas"/>
- <Caret Line="429" Column="41" TopLine="400"/>
+ <Caret Line="257" Column="15" TopLine="228"/>
</Position4>
<Position5>
<Filename Value="epostunit.pas"/>
- <Caret Line="5342" Column="29" TopLine="5313"/>
+ <Caret Line="955" Column="39" TopLine="926"/>
</Position5>
<Position6>
<Filename Value="epostunit.pas"/>
- <Caret Line="5343" Column="41" TopLine="5314"/>
+ <Caret Line="957" Column="39" TopLine="928"/>
</Position6>
<Position7>
<Filename Value="epostunit.pas"/>
- <Caret Line="5344" Column="41" TopLine="5315"/>
+ <Caret Line="959" Column="39" TopLine="930"/>
</Position7>
<Position8>
<Filename Value="epostunit.pas"/>
- <Caret Line="5345" Column="43" TopLine="5334"/>
+ <Caret Line="965" Column="24" TopLine="936"/>
</Position8>
<Position9>
<Filename Value="epostunit.pas"/>
- <Caret Line="5346" Column="46" TopLine="5334"/>
+ <Caret Line="973" Column="31" TopLine="944"/>
</Position9>
<Position10>
<Filename Value="epostunit.pas"/>
- <Caret Line="6946" Column="21" TopLine="6926"/>
+ <Caret Line="975" Column="31" TopLine="946"/>
</Position10>
<Position11>
<Filename Value="epostunit.pas"/>
- <Caret Line="6947" Column="17" TopLine="6934"/>
+ <Caret Line="977" Column="31" TopLine="948"/>
</Position11>
<Position12>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="18" Column="11"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="3877" Column="20" TopLine="3848"/>
</Position12>
<Position13>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="16" Column="21"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="3989" Column="16" TopLine="3960"/>
</Position13>
<Position14>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="17" Column="22"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4022" Column="13" TopLine="3994"/>
</Position14>
<Position15>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="18" Column="22"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4254" Column="16" TopLine="4225"/>
</Position15>
<Position16>
<Filename Value="epostunit.pas"/>
- <Caret Line="6947" Column="17" TopLine="6934"/>
+ <Caret Line="4301" Column="16" TopLine="4273"/>
</Position16>
<Position17>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="18" Column="22"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4306" Column="16" TopLine="4278"/>
</Position17>
<Position18>
<Filename Value="epostunit.pas"/>
- <Caret Line="6947" TopLine="6934"/>
+ <Caret Line="4523" Column="20" TopLine="4495"/>
</Position18>
<Position19>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="16" Column="21"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4649" Column="46" TopLine="4621"/>
</Position19>
<Position20>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="17" Column="22"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5152" Column="94" TopLine="5123"/>
</Position20>
<Position21>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="18" Column="22"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5227" Column="16" TopLine="5198"/>
</Position21>
<Position22>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="132" Column="21" TopLine="103"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="2010" TopLine="1988"/>
</Position22>
<Position23>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="137" Column="14" TopLine="108"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="58" Column="42" TopLine="36"/>
</Position23>
<Position24>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="145" Column="22" TopLine="116"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="1398" Column="96" TopLine="1375"/>
</Position24>
<Position25>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="150" Column="14" TopLine="121"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="1211" Column="82" TopLine="1190"/>
</Position25>
<Position26>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="128" Column="43" TopLine="241"/>
+ <Filename Value="werteunit.pas"/>
</Position26>
<Position27>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="228" Column="7" TopLine="208"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="74" Column="27" TopLine="46"/>
</Position27>
<Position28>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="226" Column="11" TopLine="208"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="75" Column="27" TopLine="47"/>
</Position28>
<Position29>
- <Filename Value="../units/systemunit.pas"/>
- <Caret Line="128" Column="16" TopLine="110"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5251" Column="23" TopLine="5227"/>
</Position29>
+ <Position30>
+ <Filename Value="epostunit.pas"/>
+ </Position30>
</JumpHistory>
</ProjectSession>
<Debugging>
diff --git a/epostunit.pas b/epostunit.pas
index a01d135..c629128 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -118,7 +118,8 @@ type
procedure wMinW(miW: extended);
function rMaxW: extended;
procedure wMaxW(maW: extended);
- function istKomplex: boolean;
+ function rIstKomplex: boolean;
+ procedure wIstKomplex(komplex: boolean);
function xScale: extended;
function tScale: extended;
function dichtenParameterErkannt(sT: boolean; s: string; var bekannteBefehle: tMyStringList; threads,xMin,xMax,tMin,tMax: longint): boolean;
@@ -190,6 +191,7 @@ type
property _beta: extended read rBeta write wBeta;
property _minW: extended read rMinW write wMinW;
property _maxW: extended read rMaxW write wMaxW;
+ property istKomplex: boolean read rIstKomplex write wIstKomplex;
end;
tAchse = record
lage: tLage;
@@ -946,7 +948,7 @@ begin
end{of case};
end;
-function tWerte.istKomplex: boolean;
+function tWerte.rIstKomplex: boolean;
begin
case genauigkeit of
gSingle:
@@ -958,6 +960,24 @@ begin
end{of case};
end;
+procedure tWerte.wIstKomplex(komplex: boolean);
+begin
+ if komplex=istKomplex then
+ exit;
+ if komplex then
+ _tSiz:=2*_tSiz
+ else
+ _tSiz:=_tSiz div 2;
+ case genauigkeit of
+ gSingle:
+ sWerte.params.istKomplex:=komplex;
+ gDouble:
+ dWerte.params.istKomplex:=komplex;
+ gExtended:
+ eWerte.params.istKomplex:=komplex;
+ end{of case};
+end;
+
function tWerte.findeAlleDateien(nam: string; var dat: tGenerischeInputDateiInfoArray; vorlage: tGenerischeInputDateiInfo): boolean;
var
err: longint;
@@ -3840,13 +3860,13 @@ end;
function tWerte.extrahierePhase(sT: boolean; f: tMyStringList; threads: longint; Warn: tWarnstufe): boolean;
var
- Zeit,pvFehler,hintergrund,xFak,yFak: extended;
- fensters: array[boolean] of tSin2Fenster;
- s: string;
- b,hintergrundAbziehen: boolean;
- bekannteBefehle: tMyStringList;
- maxPos: tIntPoint;
- betraege: tWerte;
+ Zeit,pvFehler,xFak,yFak: extended;
+ fensters: array[boolean] of tSin2Fenster;
+ s: string;
+ b: boolean;
+ bekannteBefehle: tMyStringList;
+ maxPos: tIntPoint;
+ betraege: tWerte;
begin
result:=false;
Zeit:=now;
@@ -3854,8 +3874,10 @@ begin
gibAus('Phase extrahieren ...',3);
for b:=false to true do
fensters[b]:=tSin2Fenster.create;
- hintergrundAbziehen:=false;
- hintergrund:=0;
+ if not istKomplex then begin
+ gibAus('Ich kann nur aus komplexen Werten die Phase ermitteln!',3);
+ exit;
+ end;
xFak:=1;
yFak:=1;
bekannteBefehle:=tMyStringList.create;
@@ -3879,10 +3901,6 @@ begin
fensters[b].aktiv:=true;
continue;
end;
- if istDasBefehl('Hintergrund abziehen',s,bekannteBefehle,false) then begin
- hintergrundAbziehen:=true;
- continue;
- end;
if istDasBefehl('Abstandsmetrik',s,bekannteBefehle,true) then begin
xFak:=round(kont2diskFak('x',exprToFloat(sT,erstesArgument(s))));
yFak:=round(kont2diskFak('t',exprToFloat(sT,s)));
@@ -3903,24 +3921,14 @@ begin
exit;
end;
- if hintergrundAbziehen then
- case genauigkeit of
- gSingle:
- hintergrund:=sWerte.ermittleHintergrund;
- gDouble:
- hintergrund:=dWerte.ermittleHintergrund;
- gExtended:
- hintergrund:=eWerte.ermittleHintergrund;
- end{of case};
-
gibAus('berechne t-FFT ...',3);
- if not fft(threads,true,false,doRes,doResSmi,fensters[true],hintergrund,pvFehler,Warn) then begin
+ if not fft(threads,true,false,doAlleResIms,doAlleResIms,fensters[true],0,pvFehler,Warn) then begin
gibAus('Es traten Fehler auf!',3);
exit;
end;
gibAus(' (Parseval-Fehler = '+floatToStr(pvFehler)+')',3);
gibAus('berechne x-FFT ...',3);
- if not fft(threads,false,false,doRes,doResSmi,fensters[false],0,pvFehler,Warn) then begin
+ if not fft(threads,false,false,doAlleResIms,doAlleResIms,fensters[false],0,pvFehler,Warn) then begin
gibAus('Es traten Fehler auf!',3);
exit;
end;
@@ -3932,8 +3940,6 @@ begin
betraege:=tWerte.create(self,0,_xSteps-1);
betraege.fft2dNachbearbeitung(threads,doBetrQdr);
- fft2dNachbearbeitung(threads,doAlleResIms);
-
gibAus('tiefe Frequenzen filtern',3);
case genauigkeit of
gSingle:
@@ -3945,6 +3951,8 @@ begin
end{of case};
betraege.free;
+ writeln(tIntPointToStr(maxPos));
+
gibAus('zentrieren '+tIntPointToStr(maxPos),3);
verschiebe(threads,maxPos);
@@ -3955,14 +3963,14 @@ begin
end;
gibAus(' (Parseval-Fehler = '+floatToStr(pvFehler)+')',3);
gibAus('berechne inverse t-FFT ...',3);
- if not fft(threads,true,true,doAlleResIms,doAlleResIms,nil,hintergrund,pvFehler,Warn) then begin
+ if not fft(threads,true,true,doAlleResIms,doAlleResIms,nil,0,pvFehler,Warn) then begin
gibAus('Es traten Fehler auf!',3);
exit;
end;
gibAus(' (Parseval-Fehler = '+floatToStr(pvFehler)+')',3);
- gibAus('Phasenwinkel ermitteln ...',3);
- ermittlePhasenWinkel(threads);
+// gibAus('Phasenwinkel ermitteln ...',3);
+// ermittlePhasenWinkel(threads);
gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
@@ -4011,15 +4019,7 @@ begin
exit;
until false;
- _tSiz:=_tSiz*2;
- case genauigkeit of
- gSingle:
- sWerte.params.istKomplex:=true;
- gDouble:
- dWerte.params.istKomplex:=true;
- gExtended:
- eWerte.params.istKomplex:=true;
- end{of case};
+ istKomplex:=true;
if sT then begin
result:=true;
exit;
@@ -5224,44 +5224,68 @@ var
FNTs: array of tFFT2dNBThread;
fertig: boolean;
begin
- if nB in [doAlleResIms,doAlleResSmi] then begin
- _tSiz:=_tSiz*2;
- holeRAM(3);
+ if istKomplex then begin
+ setLength(FNTs,threads);
+ for i:=0 to length(FNTs)-1 do
+ FNTs[i]:=tFFT2dNBThread.create(
+ round(i*(_xSteps-1)/length(FNTs))+1,
+ round((i+1)*(_xSteps-1)/length(FNTs)),
+ self,
+ nB);
+ repeat
+ sleep(10);
+ fertig:=true;
+ for i:=0 to length(FNTs)-1 do
+ fertig:=fertig and FNTs[i].fertig;
+ until fertig;
+ for i:=0 to length(FNTs)-1 do
+ FNTs[i].free;
+ gibAus('Alle FFT2dNBThreads fertig!',1);
+ if not (nB in [doAlleResIms,doAlleResSmi]) then begin
+ istKomplex:=false;
+ holeRAM(3);
+ end;
+ end
+ else begin
+ if nB in [doAlleResIms,doAlleResSmi] then begin
+ istKomplex:=true;
+ holeRAM(3);
+ case genauigkeit of
+ gSingle:
+ sWerte.fft2dNachbearbeitungVerdoppeln(nB);
+ gDouble:
+ dWerte.fft2dNachbearbeitungVerdoppeln(nB);
+ gExtended:
+ eWerte.fft2dNachbearbeitungVerdoppeln(nB);
+ end{of case};
+ exit;
+ end;
+
+ // der "Rand"
case genauigkeit of
- gSingle:
- sWerte.fft2dNachbearbeitungVerdoppeln(nB);
- gDouble:
- dWerte.fft2dNachbearbeitungVerdoppeln(nB);
- gExtended:
- eWerte.fft2dNachbearbeitungVerdoppeln(nB);
+ gSingle: sWerte.fft2dNachbearbeitungA(nB);
+ gDouble: dWerte.fft2dNachbearbeitungA(nB);
+ gExtended: eWerte.fft2dNachbearbeitungA(nB);
end{of case};
- exit;
- end;
-
- // der "Rand"
- case genauigkeit of
- gSingle: sWerte.fft2dNachbearbeitungA(nB);
- gDouble: dWerte.fft2dNachbearbeitungA(nB);
- gExtended: eWerte.fft2dNachbearbeitungA(nB);
- end{of case};
- // der Hauptteil (alles außer erster und mittlerer Zeile/Spalte)
- setLength(FNTs,threads);
- for i:=0 to length(FNTs)-1 do
- FNTs[i]:=tFFT2dNBThread.create(
- round(i*(_xSteps div 2 -1)/length(FNTs))+1,
- round((i+1)*(_xSteps div 2 -1)/length(FNTs)),
- self,
- nB);
- repeat
- sleep(10);
- fertig:=true;
+ // der Hauptteil (alles außer erster und mittlerer Zeile/Spalte)
+ setLength(FNTs,threads);
for i:=0 to length(FNTs)-1 do
- fertig:=fertig and FNTs[i].fertig;
- until fertig;
- for i:=0 to length(FNTs)-1 do
- FNTs[i].free;
- gibAus('Alle FFT2dNBThreads fertig!',1);
+ FNTs[i]:=tFFT2dNBThread.create(
+ round(i*(_xSteps div 2 -1)/length(FNTs))+1,
+ round((i+1)*(_xSteps div 2 -1)/length(FNTs)),
+ self,
+ nB);
+ repeat
+ sleep(10);
+ fertig:=true;
+ for i:=0 to length(FNTs)-1 do
+ fertig:=fertig and FNTs[i].fertig;
+ until fertig;
+ for i:=0 to length(FNTs)-1 do
+ FNTs[i].free;
+ gibAus('Alle FFT2dNBThreads fertig!',1);
+ end;
end;
function tWerte.exprToFloat(sT: boolean; s: string): extended;
@@ -6104,11 +6128,18 @@ end;
procedure tFFT2dNBThread.stExecute;
begin
gibAus('FFT2d-Nachbearbeitungsthread gestartet: '+intToStr(xMin)+'-'+intToStr(xMax)+' ...',1);
- case pW.genauigkeit of
- gSingle: pW.sWerte.fft2dNachbearbeitungB(xMin,xMax,nB);
- gDouble: pW.dWerte.fft2dNachbearbeitungB(xMin,xMax,nB);
- gExtended: pW.eWerte.fft2dNachbearbeitungB(xMin,xMax,nB);
- end{of case};
+ if pW.istKomplex then
+ case pW.genauigkeit of
+ gSingle: pW.sWerte.fft2dNachbearbeitungKomplex(xMin,xMax,nB);
+ gDouble: pW.dWerte.fft2dNachbearbeitungKomplex(xMin,xMax,nB);
+ gExtended: pW.eWerte.fft2dNachbearbeitungKomplex(xMin,xMax,nB);
+ end{of case}
+ else
+ case pW.genauigkeit of
+ gSingle: pW.sWerte.fft2dNachbearbeitungB(xMin,xMax,nB);
+ gDouble: pW.dWerte.fft2dNachbearbeitungB(xMin,xMax,nB);
+ gExtended: pW.eWerte.fft2dNachbearbeitungB(xMin,xMax,nB);
+ end{of case};
gibAus('... und fertig!',1);
end;
diff --git a/werteunit.pas b/werteunit.pas
index cbf1794..a34b5f5 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -185,6 +185,10 @@ begin
inc(cnt);
end;
+
+ for i:=1 to length(maxima)-1 do
+ if werte[maxima[i-1]['x']+maxima[i-1]['y']*params.xSteps]<werte[maxima[i]['x']+maxima[i]['y']*params.xSteps]then
+ raise exception.create('Interner Fehler: Maxima sind nicht sortiert, sollten sie aber sein!');
end;
constructor tLLWerte.create(ps: tExtraInfos);
@@ -1390,23 +1394,25 @@ var
i,j,hLen: longint;
begin
hLen:=params.tSiz div 2;
+ if not params.istKomplex then
+ raise exception.create('Komplexe FFT2dNachbearbeitung geht nur mit vollkomplexen Werten!');
case nB of
doResIms,doResSmi,doRes:
raise exception.create('Vollkomplexe Werte können nicht auf die Hälfte komprimiert werden!');
doBetr:
for j:=0 to hLen-1 do
for i:=xMin to xMax do
- werte[i+j*params.tSiz]:=
+ werte[i+j*params.xSteps]:=
sqrt(
- sqr(extended(werte[i+j*params.tSiz]))+
- sqr(extended(werte[i+(j+hLen)*params.tSiz]))
+ sqr(extended(werte[i+j*params.xSteps]))+
+ sqr(extended(werte[i+(j+hLen)*params.xSteps]))
);
doBetrQdr:
for j:=0 to hLen-1 do
for i:=xMin to xMax do
- werte[i+j*params.tSiz]:=
- sqr(extended(werte[i+j*params.tSiz]))+
- sqr(extended(werte[i+(j+hLen)*params.tSiz]));
+ werte[i+j*params.xSteps]:=
+ sqr(extended(werte[i+j*params.xSteps]))+
+ sqr(extended(werte[i+(j+hLen)*params.xSteps]));
doAlleResIms: ;
doAlleResSmi:
raise exception.create('Nachbearbeitungsmethode '+fftDoToStr(nB)+' ist aus Faulheit noch nicht implementiert -- mach''s doch einfach!');