Frequenzfilterung

Ich habe ein Signal, das aus N Frequenzen besteht, alle mit unbekannter Phase und Frequenz (N) = Frequenz (N-1) + 2 Hz. Ich möchte die Amplituden einiger dieser Signale selektiv so skalieren, dass ich ändern kann, welche Frequenzen zu skalieren sind und wie stark sie im laufenden Betrieb skaliert werden sollen.

Ist das möglich? Wie komplex wäre eine Schaltung?

analog? Digital? oder beides?

Wo soll ich anfangen?

Danke

Wie groß ist N? ...
Beliebig groß. Zwischen Hunderttausend und einer Million.
Das wird sehr, sehr, sehr schwer und ja, Sie brauchen einen digitalen Filter.
Brauchen Sie es, um in Echtzeit zu filtern? Dies macht einen Unterschied mit der Rechenleistung.
Ja... Echtzeit. Ich brauche jedoch nicht unbedingt, dass das Ausgangssignal wie das Eingangssignal aussieht. Das Eingangssignal ist ein Impuls, bei dem jede Frequenz nur eine halbe Periode durchläuft, aber das Integral der Wellenfunktion jeder Frequenz gleich ist. Alles, was ich am Ende herausholen muss, ist eine Art Summierung, bei der ich auswählen kann, welche Frequenzen die Endsumme beeinflussen und wie stark.
können Sie uns zu dem Problem verlinken, das Sie haben. nur für den Fall, dass bei der Übersetzung etwas verloren geht.
Nun, es ist Teil eines meiner eigenen Projekte ... Es ist nicht wirklich ein Buchproblem ... Möchten Sie den Kontext des Problems?
@Ned, ich würde es genießen, ich kann dir vielleicht auf eine substanziellere Weise helfen. Wenn Sie mir lieber eine E-Mail schicken möchten, als alles im Allgemeinen im Internet zu verschenken, bin ich damit einverstanden.

Antworten (4)

Um Brian zu erweitern, ist es nahezu unmöglich, einen Filter mit analogen Komponenten herzustellen, der einen sehr kleinen Durchlassbereich mit einem schnellen Übergang in den Sperrbereich hat, während dies bei einem digitalen System sehr, sehr einfach ist.

Sie müssen mindestens doppelt so schnell abtasten wie das schnellste Signal. Ich würde vorschlagen, sicherzustellen, dass Sie mindestens 2,1-mal schneller sind.

Denn Sie müssen einen gigantischen Filter entwerfen, der jede Frequenz um den gewünschten Betrag ändert.

Wenn Sie die Größe jedes Signals separat steuern möchten, müssen Sie N digitale Filter erstellen, N Datensätze erstellen, die N verschiedenen Verstärkungen anwenden und dann die Signale neu kombinieren. Wenn Ihre Filterung gut ist, können Sie nur summieren neu kombinieren. Nehmen Sie nicht zu viel Trost darin, da dies der einzige einfache Schritt ist.

Je schärfer Sie Ihre Übergänge wünschen, desto mehr Datenpunkte benötigt der Filter. Daran führt kein Weg vorbei, das ist mathematisch bewiesen.

Lassen Sie mich in einem Kommentar wissen, ob ich weitere Hilfe hinzufügen kann.

Also im Grunde geht es nicht ohne einen gigantischen Filter ... Das beantwortet meine Frage ziemlich gut. Würde es die Antwort ändern, wenn die Phase für alle N Frequenzen bekannt wäre?
nein, die Phase macht kaum einen Unterschied.
Die FFT kann als eine Bank von N Filtern betrachtet werden (wobei N eine Potenz von 2 ist). Erstellen Sie das Rad also nicht neu. N eine Zweierpotenz zuzulassen, vereinfacht die Anzahl der notwendigen Multiplikationen.
Ja, ich verstehe Ihren Ansatz, ich habe ihn für die Haltephase erklärt. Wenn Sie nur ein Signal filtern, bei dem Sie 100000 verschiedene Frequenzen finden, sie separat skalieren und dann das Signal neu erstellen müssen, insbesondere wenn sie zeitlich variieren, benötigen Sie genauso viel RAM und haben immer noch eine Menge Arbeit.

Für so viele Durchlassbänder können Sie Ihr Signal nehmen, es in Fenster aufteilen und dann das Fenster FFTen. (Sie benötigen ein riesiges Fenster für eine Million Bins.) Skalieren Sie dann die Größe jedes Frequenzbins wie gewünscht, führen Sie dann die inverse FFT durch und fügen Sie die Chunks wieder zu einem kontinuierlichen Strom zusammen.

Dies wird die Phase ein wenig verwürfeln, aber es funktioniert gut genug in vielen Anwendungen.

Sie benötigen eine große Anzahl von Punkten in der FFT für so viele Frequenzen oder müssen eine Wavelet-Technik implementieren.
WAHR. ... ... ...
dies ist auch sehr herausfordernd, wenn sich die Signale mit der Zeit ändern. Verdammt, es ist eine Menge Arbeit, wenn sie es nicht tun.
Ja, FFT ist der richtige Weg. Um genau 2 Hz breite Frequenzbins zu erhalten, müssen Sie ein genau 0,5 Sekunden langes Datenfenster an die FFT übergeben.

Es müsste für eine gute Anzahl von N digital sein. Beginnen Sie mit einem einfachen digitalen Filterbuch.

Sie müssen wahrscheinlich digitale Signalverarbeitung verwenden.
Besuchen Sie http://www.dspguide.com/ für eine Einführung in DSP.