mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP digitale Signale effizient in oberes und unteres Band legen


Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielleicht übersehe ich hier etwas geradezu tragisch einfaches:
ich habe ein digitales Signal s1[n] mit 128 samples
dann habe ich ein zweites ebenfalls mit 128 samples.
Beide komplex

Nun will ich die beiden im Frequenzbereich kombinieren so dass
das eine Signal im unteren und das andere im oberen Frequenzbereich 
liegt:

also intuitiv würde ich das so machen

(matlab)

F1 = fft(s1);
F2 = fft(s2);
s3 = ifft([F1,F2];

jetzt hab ich aber 3 Fourier Transformationen,
das muss doch auch direkt im Basisband gehen.
ich weiss: null einfügen und dann filtern aber
einen "perfekten" filter gibt es ja nicht und es muss doch sicher eine 
einfache Möglichkeit geben
(so etwas wie aufmodulieren im analogen)

ein test:

s1 = exp(j*(1:128)/5)
s2 = exp(j*(1:128)/2)
F1 = fft(s1);
F2 = fft(s2);
s3 = ifft([F1,F2]);
figure
plot(abs(fft(s1)))
figure
plot(abs(fft(s2)))
figure
plot(abs(fft(s3)))

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am einfachsten müsste es gehen, wenn Du 2 komplexwertige Bandpässe 
entwirfst.  Jedes Signal wird mit einem der Bandpässe gefiltert und das 
Ergebnis addiert.

Bandpass 1 filtert die linke Seite des Spektrums von Signal 1 weg.
Bandpass 2 filtert die rechte Seite des Spektrums von Signal 2 weg.

Das ganze läuft vollständig im Zeitbereich.

Gruß,
ajax

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau das mit den Bandpässen wollte ich vermeiden
und dachte das es vielleicht einen einfachen Trick gibt um mit
extrem wenig Aufwand das Zeitsignal zu errechnen....

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und natürlich ist das mit den FFT's extrem "sauber" so sauber kriegt man 
das mit Filterung einfach nicht hin....

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>genau das mit den Bandpässen wollte ich vermeiden

Hab ich in Deinem Text gar nicht gesehen, dass Du das vermeiden 
wolltest.
Ich hätte noch einen 2ten Vorschlag:

1. FIR-Tiefpass mit 128 Stüztstellen
2. Transformation in die 2 Bandpässe durch Multiplikation mit e^j(+-)wt

Danach wie gehabt.

>und natürlich ist das mit den FFT's extrem "sauber" so sauber kriegt man
>das mit Filterung einfach nicht hin....

nur theortisch, zeig mal die Spektren.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Analogtechnik hieße das ganze "independent Sideband modulation". 
Für die Einseitenband-Erzeugung gibt es zwei Verfahren, die schon 
genannte Filterung oder die Phasenmethode.
Dazu wird das gesamte Signalband um 90 Grad in der Phase geschoben, was 
für breite Frequenzbänder, wie z.B ein Sprachsignal, nicht ganz einfach 
ist. Dann hat man noch einen Oszillator der als Sinus und Cosinus 
vorliegen muß und zwei Mischer.

Digital wäre das eine Hilpert-Transformation als Phasenschieber und zwei 
Multiplikationen.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in Matlab gibts anscheinend Funktionen in der "Communications Toolbox"
http://www.mathworks.com/access/helpdesk/help/tool...
http://www.mathworks.com/access/helpdesk/help/tool...
mit Suchbegriff "Hilbert transform filter" gefunden, damit findet Google 
noch mehr

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke!

mit der H. Trafo hab ich direkt nach deinem posting angefangen.
Ist wohl der beste weg.

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du das mit der Verschiebung eines Tiefpasse mit der komplexen 
Modulationsfunktion machst, erhälts Du genau das gleich wie mit der 
Hilbertransformation. Die ist sozusagen implizit mit drin.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.