Software geschrieben in 80586/87 Assembler und Objekt-Pascal. Wir entwickeln Software mit speziellen Berechnungen auf Bestellung (MuPAD, Mathematica, Assembler, Object-Pascal).
Verschiedene Anwendungen mit Fourier-Transformationen: |
---|
Spektrum - eine Anwendung |
SpektrumExt - eine Anwendung |
SpektrumExtImag - eine Anwendung |
SpektrumExtImagCep - eine Anwendung |
Computergrafik - eigentlich nur zum Spaß: |
Apfelmann - eine Anwendung, Darstellung der Mandelbrotmenge, beliebige Vergrößerung |
KI - ChatGPT/OpenAI unterstützte Programmierung: |
DCF77 - Signalverarbeitung und Dekodierung von ausgetasteter 750 Hz-AM |
Bibliotheken oder Unterprogramme in Assembler zum Einbinden in Ihre Hochsprachenprogramme: |
fftdll - eine Library mit 18 Procedures |
specingdll - eine Library mit 18 Procedures |
real32fft - eine externe Procedure zum Anlinken |
invreal32fft - eine externe Procedure zum Anlinken |
real64fft - eine externe Procedure zum Anlinken |
invreal64fft - eine externe Procedure zum Anlinken |
imag32fft - eine externe Procedure zum Anlinken |
invimag32fft - eine externe Procedure zum Anlinken |
imag64fft - eine externe Procedure zum Anlinken |
invimag64fft - eine externe Procedure zum Anlinken |
Spektrum ist ein Programm, geschrieben in Objekt-Pascal, rund um die Problematik mit Abtastserien von Zeitfunktionen
und deren Spektrum für Anwender, die wissen was eine Fouriertransformation ist.
Dem Benutzer wird es ermöglicht durch simple Programmierung beliebige Abastserien von Zeitfunktionen
zu erstellen, diese mit Hilfe einer FFT in den Spektralbereich zu transformieren und sich die Ergebnisse grafisch
anzusehen. Darüber hinaus sind Manipulationen am Spektrum und eine anschließende Rücktransformation in den Zeitbereich
möglich. Weitere Werkzeuge des Programms sind die Hanning-Bewertung und die inverse Hanning-Bewertung.
Grafische Darstellung und Tabellenausgabe in linearer, logarithmischer, als Phasenspektrum und als Zeitfunktion.
Für Anwender, die sich das Spektrum von 16 Bit-Stereo-WAV-Dateien ansehen wollen ist auch gesorgt. Diese Dateien können
in ihre Kanäle zerlegt, transformiert, manipuliert und wieder zurücktransformiert werden. Im Anschluß daran ist eine
Synthese zu einer 16-Bit-Stereo-WAV-Datei möglich.
Definieren Sie z. B. das Feld über der Apertur einer Antenne und berechnen Sie das Richtdiagramm, oder berechnen
Sie durch inverse FFT die Impulsantwort aus der Übertragungsfunktion bzw. durch vorwärts-FFT die Übertragungsfunktion aus der Impulsantwort.
Programmstart | log. Spektrum einer ZSB-AM | |
Phasenspektrum der AM | Tabelle der Spektralwerte | |
Spektrum des linken Stereo-Kanals des Sound-Tracks In-A-Gadda-Da-Vida von Iron Butterfly. Dateilänge 256 MiB. Man erkennt der Track ist nicht Gleichanteilsfrei. Auf die ganz hohen Frequenzen wurde ein Tiefpaß angewendet. Das Musikstück wurde in seiner ganzen Länge vom Zeitbereich in den Frequenzbereich transformiert. Berechnungen mit Spektrum 2.7 | ||
Zeitfunktion des linken Stereo-Kanals des selben Tracks | ||
Cepstrum des linken Stereo-Kanals des selben Tracks |
SpektrumExt - für wissenschaftliche Berechnungen geeignet, Version 3.1
SpektrumExt arbeitet mit 8-Byte-Long-Real-Zahlen und verarbeitet Exponenten bis 324 bei einer Genauigkeit von 15+1/2 signifikanten Stellen. Aufgrund des hohen Speicherbedarfs wurde auf die Möglichkeit zur Bearbeitung von WAV-Dateien verzichtet. Ansonsten wie Spektrum.
SpektrumExtImag - für wissenschaftliche Berechnungen geeignet, Version 3.2
SpektrumExtImag arbeitet mit 8-Byte-Long-Real-Zahlen und verarbeitet Exponenten bis 324 bei einer Genauigkeit von 15+1/2 signifikanten Stellen. Komplexe Abtastserien können definiert und transformiert werden. Die Algorithmen der allgemein bekannten FFT werden verwendet. Es gibt Funktionen für die Hanning-Bewertung, inverse Hanning-Bewertung und den Spektral-Diskriminator. Dieses Programm ist am ehesten geeignet für rein mathematische Anwendung. Die FFT bzw. inverse FFT wird natürlich in Rekordzeit berechnet.
[Oben][Anfang]SpektrumExtImagCep - eine Anwendung, für wissenschaftl. Berechnungen geeignet
SpektrumExtImagCep arbeitet mit 8-Byte-Long-Real-Zahlen und verarbeitet Exponenten bis 324 bei einer Genauigkeit von 15+1/2 signifikanten Stellen. Komplexe Abtastserien können definiert und transformiert werden. Die Algorithmen der allgemein bekannten FFT werden verwendet. Zusätzlich wurden die Funktionen CEPSTRUM und inverses CEPSTRUM implementiert, mit denen eine komplexe Logarithmierung und Rücktransformation in den Zeitbereich möglich ist und umgekehrt. Es gibt Funktionen für die Hanning-Bewertung, inverse Hanning-Bewertung und den Spektral-Diskriminator. Dieses Programm ist am ehesten geeignet für rein mathematische Anwendung. Die FFT bzw. inverse FFT wird natürlich in Rekordzeit berechnet.
[Oben][Anfang]
Der Apfelmann aus der Mandelbrotmenge läßt sich in verschiedenen Farben grafisch darstellen. Mit der Maus lassen sich beliebig oft (bis an die Grenzen der Zahlendarstellung der FPU) Untermengen in der Grafik markieren, vergrößern und neu berechnen. Das Ergebnis sind faszinierende Grafiken mit scheinbar unerschöpflicher Vielfalt. Berechnete Bilder können dann als BMP-Datei auswählbarer Größe gespeichert, in Paint geöffnet und gedruckt werden. Je nach Leistungsfähigkeit Ihrer Grafik-Hardware sind großformatige Berechnungen möglich.
Screenshots:kompl. Mandelbrotmenge | Untermenge am Rande | |
stark vergrößerte Untermenge am Fuß der Mandelbrotmenge |
[Download Mandelbrot Giveaway]
[Oben][Anfang]
Mit ChatGPT von OpenAI habe ich in enger Zusammenarbeit ein Mathematica-Programm entwickelt, das aus einer mit Austastlücken versehene 750 Hz-AM das Signal von DCF77 signalverarbeitet und dekodiert.
[Download Sourcefile mit Beispiel]
[Oben][Anfang]fftdll - für wissenschaftliche Berechnungen geeignet
This fft.dll contains 18 procedures to solve problems around FFTs.
The procedures use SSE2-instructions of the Pentium and FPU-instructions.
The real-data-computations are all made within the 80-Bit-FPU-registers.
For integer-computations SSE2 instructions and XMM-registers are used.
Some procedures requires complex input-data as explained.
In Delphi this procedures will be declared as follows, for other high-level-languages refer to manual:
procedure TestHello();stdcall;external 'fft.dll';
or
procedure real32fft(lpFileName:PChar,lpError:Pointer);stdcall;external 'fft.dll'
- TestHello();
returns a message-box that the fft.dll is loaded correctly
- real32fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 4-Byte-Short-Reals with real data
(n=2^k real numbers)
- invreal32fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 4-Byte-Short-Reals with complex data
(n=2^(k-1) real numbers and 2^(k-1) complex numbers)
- hanning32(lpFileNameString,lpdwErrVar);
valuates a file of 4-Byte-Short-Reals with the Hanning-Valuation
- invhanning32(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 4-Byte-Short-Reals
- real64fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 8-Byte-Long-Reals
(n=2^k real numbers)
- invreal64fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 8-Byte-Long-Reals
(n=2^(k-1) real numbers and 2^(k-1) complex numbers)
- hanning64(lpFileNameString,lpdwErrVar);
valuates a file of 8-Byte-Long-Reals with the Hanning-Valuation
- invhanning64(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 8-Byte-Long-Reals
- imag64fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 8-Byte-Long-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- invimag64fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 8-Byte-Long-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- imaghanning64(lpFileNameString,lpdwErrVar);
valuates a file of 8-Byte-Long-Reals with the Hanning-Valuation
(n=2^k real numbers and 2^k complex numbers)
- invimaghanning64(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 8-Byte-Long-Reals
(n=2^k real numbers and 2^k complex numbers)
- imag80fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 10-Byte-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- invimag80fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 10-Byte-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- imaghanning80(lpFileNameString,lpdwErrVar);
valuates a file of 10-Byte-Reals with the Hanning-Valuation
(n=2^k real numbers and 2^k complex numbers)
- invimaghanning80(lpFileNameString,lpdwErrVar);
valuates a file of 10-Byte-Reals with the inverse Hanning-Valuation
(n=2^k real numbers and 2^k complex numbers)
specingdll - für wissenschaftliche Berechnungen geeignet
This specing.dll contains 18 procedures to solve problems around FFTs and digital signal computations.In Delphi this procedures will be declared as follows, for other high-level-languages refer to manual:
procedure TestHello();stdcall;external 'fft.dll';
or
procedure real32fft(lpFileName:PChar,lpError:Pointer);stdcall;external 'fft.dll'<ßp>
- TestHello();
returns a message-box that the fft.dll is loaded correctly
- real32fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 4-Byte-Short-Reals with real data
(n=2^k real numbers)
- invreal32fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 4-Byte-Short-Reals with complex data
(n=2^(k-1) real numbers and 2^(k-1) complex numbers)
- hanning32(lpFileNameString,lpdwErrVar);
valuates a file of 4-Byte-Short-Reals with the Hanning-Valuation
- invhanning32(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 4-Byte-Short-Reals
- wavzerl(lpFileNameString,lpdwErrVar);
creates a file of 4-Byte-Short-Reals from a 16-Bit-Stereo-WAV-File
- syn(lpFileNameString1,lpFileNameString2,lpErrVar);
creates a 16-Bit-Stereo-WAV-File from 2 pc. 4-Byte-Short-Reals
- disc(lpFileNameString,lpErrVar);
a noise-discriminator for a spectrum-file
- adsim(lpFileNameSTring,lpErrVar),
simulates a adc on a mathematical computated series
- full(lpFileNameString,lpErrVar);
full amplification for 16-Bit-Stereo-WAV-Files
- filtflt(lpFileNameString,lpErrVar);
FIR (LP, BP, HP)-filter for 4-Byte-Short-Real-Series
with extra program to determine the filter-data
- ampflt(lpFileNameString,dwamp,lpErrVar);
amplification for 16-Bit-Stereo-WAV-Files
- cep32(lpFileNameString,lpErrVar);
amount/angle-CEPSTRUM computation from 4-Byte-Short-Real-spectrum-data
- lncep32(lpFileNameString,lpErrVar);
logarithm CEPSTRUM computation from 4-Byte-Short-Real-spectrum-data
- real32zerpic((lpFileNameString,lpErrVar);
creates a file of 2^k 4-Byte-Short-Reals from a known *.bmp-format
- bmp32fft(lpFileNameString,lpdwErrVar);
makes a 2-D-FFT of a file of 4-Byte-Short-Reals with real input data
(n=2^k real numbers) and creates a new file named *2dft.fft
- bmp1dfft(lpFileNameString,lpdwErrVar);
makes a 1-D-FFT of a file of 4-Byte-Short-Reals with real input data
(n=2^k real numbers) and creates a new file named *1dft.fft
- bmp32cep(lpFileNameString,lpdwErrVar);
makes a 2-D-CEPSTRUM of a file of 4-Byte-Short-Reals with real spectrum-input-data
(n=2^k real numbers) and creates a new file named *2dftit.cep
- bmp1dcep(lpFileNameString,lpdwErrVar);
makes a 1-D-CEPSTRUM of a file of 4-Byte-Short-Reals with real spectrum-input-data
(n=2^k real numbers) and creates a new file named *1dftit.cep
- bmpsyn(lpFileNameString,lpdwErrVar);
creates a *2dft.bmp-file from a *2dft.fft-file
real32fft - eine Procedure zum Anlinken
real32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit realfft(FileName:String, lpError) aufgerufen. Die Berechnung des Spektrums ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von realfft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer FFT hat. Real32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
[Oben][Anfang]invreal32fft - eine Procedure zum Anlinken
invreal32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit invrealfft(FileName:String, lpError) aufgerufen. Die Berechnung der Abtastwerte ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von invrealfft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer inversen FFT hat. Invreal32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
[Oben][Anfang]real64fft - eine Procedure zum Anlinken
real64fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit realfft(FileName:String, lpError) aufgerufen. Die Berechnung des Spektrums ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von real64fft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer inversen FFT hat. Real64fft arbeitet mit 8-Byte-Long-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
[Oben][Anfang]invreal64fft - eine Procedure zum Anlinken
invreal64fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit invrealfft(FileName:String, lpError) aufgerufen. Die Berechnung der Abtastwerte ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von invreal64fft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer inversen FFT hat. Invreal64fft arbeitet mit 8-Byte-Long-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
[Oben][Anfang]imag32fft - eine Procedure zum Anlinken
imag32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit imagfft(FileName:String, lpError) aufgerufen. Die Berechnung des Spektrums ist geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Imag32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
[Oben][Anfang]invimag32fft - eine Procedure zum Anlinken
invimag32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit invimagfft(FileName:String, lpError) aufgerufen. Die Berechnung des Abtastwerte ist geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Invimag32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
[Oben][Anfang]imag64fft - eine Procedure zum Anlinken
Wie imag32fft, aber Verarbeitung von Double-Real-Zahlen (8-Byte-Long-Real).
[Oben][Anfang]invimag64fft - eine Procedure zum Anlinken
Wie invimag32fft, aber Verarbeitung von Double-Real-Zahlen (8-Byte-Long-Real).
[Oben][Anfang]