Hallo,
Markus Greim schrieb:
doch, das mache ich andauernd so (gesetzt das / eine Komponentenweise, Komplexe Division ist). Bei Sweep muss man aber ein FFT über die Gesamte Aufnahme machen. Das kostet mächtig Speicher und CPU. Ferner wird man pro Frequenzkanal das SNR genau betrachten müssen. Nur da wo fft(Ei) signifikant Amplitude hat, kommt auch etwas vernünftiges raus. Und da hat mna bei einem Sweep das Problem, dass natürlich jede Frequenz nur kurz dran ist und die meiste Zeit sich also nur Rauschen auf diesem Frequenzkanal sammelt. Ich nehme dafür für diese Messart entweder MLS-Signale oder definierte kümstliche Rauschsignale die durch ifft erzeugt werden.
Sweep ist nicht so der Brüller. Wenn man den Sweep in der Frequenz quantisieren könnte, wäre das besser. Also N diskrete Frequenzen, die allesamt ein Vielfaches eines geeignet zu wählenden Messintervalls sind das einer Zweierpotenz an Samples entsprechen sollte. Dann kann man folgendes machen:
Generator Messstatus ------------ ----------------------- Settle Delay Frequenz 1 ----------------------- Sample für Frequenz 1 ------------------------------------- Settle Delay Frequenz 2 ----------------------- Sample für Frequenz 2 ------------------------------------- ...
Die Sampledauer muss immer ein vielfaches der Periodizität der zu messenden Frequenz sein. Dann berechnet man für jede Frequenz einzeln fft(Ea)/fft(Ei) nimmt aber nur den Koeffizienten des Ergebnisses, der der aktuellen Anregungsfrequenz exakt entspricht. Damit hat man so eine Art Lock-In gemacht und erreicht selbst unter räudigen Bedingungen exzellente SNRs (z.B. >60dB mit einem 8-Bit ADC in störungsreicher Umgebung). Diese Qualität hat man nicht, wenn man die Messmethode nicht mit dem Wissen anreichert, welche Frequenz gerade gemessen wird. Mathematisch gesehen kann man sich die FFTs natürlich sparen, wenn man nur einen Koeffizienten braucht und einfach eine PCA mit einem Quadratursignal der Anregungsfrequenz machen. Das ist extrem schnell, da O(n) in CPU und O(1) im Speicher.
Theoretisch bekommt man fast genausogute Ergebnisse, wenn man einen kontinuierlichen Sweep geschickt auswertet. Aber das ist /erheblich/ mehr Aufwand und birgt Risiken, wie beispielsweise Schatten hinter Polen mit hoher Güte.
Marcel
Markus Greim schrieb:
doch, das mache ich andauernd so (gesetzt das / eine Komponentenweise, Komplexe Division ist). Bei Sweep muss man aber ein FFT über die Gesamte Aufnahme machen. Das kostet mächtig Speicher und CPU. Ferner wird man pro Frequenzkanal das SNR genau betrachten müssen. Nur da wo fft(Ei) signifikant Amplitude hat, kommt auch etwas vernünftiges raus. Und da hat mna bei einem Sweep das Problem, dass natürlich jede Frequenz nur kurz dran ist und die meiste Zeit sich also nur Rauschen auf diesem Frequenzkanal sammelt. Ich nehme dafür für diese Messart entweder MLS-Signale oder definierte kümstliche Rauschsignale die durch ifft erzeugt werden.
Sweep ist nicht so der Brüller. Wenn man den Sweep in der Frequenz quantisieren könnte, wäre das besser. Also N diskrete Frequenzen, die allesamt ein Vielfaches eines geeignet zu wählenden Messintervalls sind das einer Zweierpotenz an Samples entsprechen sollte. Dann kann man folgendes machen:
Generator Messstatus ------------ ----------------------- Settle Delay Frequenz 1 ----------------------- Sample für Frequenz 1 ------------------------------------- Settle Delay Frequenz 2 ----------------------- Sample für Frequenz 2 ------------------------------------- ...
Die Sampledauer muss immer ein vielfaches der Periodizität der zu messenden Frequenz sein. Dann berechnet man für jede Frequenz einzeln fft(Ea)/fft(Ei) nimmt aber nur den Koeffizienten des Ergebnisses, der der aktuellen Anregungsfrequenz exakt entspricht. Damit hat man so eine Art Lock-In gemacht und erreicht selbst unter räudigen Bedingungen exzellente SNRs (z.B. >60dB mit einem 8-Bit ADC in störungsreicher Umgebung). Diese Qualität hat man nicht, wenn man die Messmethode nicht mit dem Wissen anreichert, welche Frequenz gerade gemessen wird. Mathematisch gesehen kann man sich die FFTs natürlich sparen, wenn man nur einen Koeffizienten braucht und einfach eine PCA mit einem Quadratursignal der Anregungsfrequenz machen. Das ist extrem schnell, da O(n) in CPU und O(1) im Speicher.
Theoretisch bekommt man fast genausogute Ergebnisse, wenn man einen kontinuierlichen Sweep geschickt auswertet. Aber das ist /erheblich/ mehr Aufwand und birgt Risiken, wie beispielsweise Schatten hinter Polen mit hoher Güte.
Marcel