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


von Richard (Gast)


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)))

von ajax (Gast)


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

von Richard (Gast)


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....

von Richard (Gast)


Lesenswert?

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

von ajax (Gast)


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.

von Christoph db1uq K. (christoph_kessler)


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.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

in Matlab gibts anscheinend Funktionen in der "Communications Toolbox"
http://www.mathworks.com/access/helpdesk/help/toolbox/comm/ug/fp59322.html
http://www.mathworks.com/access/helpdesk/help/toolbox/commblks/ref/ssbammodulatorpassband.html
mit Suchbegriff "Hilbert transform filter" gefunden, damit findet Google 
noch mehr

von Richard (Gast)


Lesenswert?

danke!

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

von ajax (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.