mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Matlab FFT / IFFT


Autor: TP78 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich spiele gerade etwas mit Matlab rum und habe mir eine Zeitfunktion 
bestehend aus drei Sinunsfunktionen unterschiedlicher Frequenz 
generiert. Diese Wandele ich ins Spektrum und wieder in den Zeitbereich 
und wieder ins Spektrum. Nun wundere ich mich, warum die Amplitudenhöhen 
nicht übereinstimmen! ...richtig, ich wandele ins 
Leistungsdichtespektrum (also keine Phaseninfo)! Also ist mein 
Zeitsignal aus der Rücktransformation natürlich Phasenfalsch - was aber 
doch auf mein daraus entstehendes Spektrum keinen Einfluss hat.
Hier skizziere ich mal den Code:

%Wahl des Testsignals (oben auch ändern)
ZeitSig=10*sin(2*pi*Frequenz*t)+5*sin(2*pi*Frequenz2*t)+8*sin(2*pi*Frequ 
enz3*t);

%FFT vom Signal x
Y= fft(ZeitSig,8192);
% Leistungsdichte Pyy
Pyy=Y.*conj(Y)/8192;

ZeitSigRueck = ifft(Y,8192);
ZeitSigAusPyy = real(ifft(Pyy,8192));

%FFT vom Signal ZeitSigAusPyy
Y= fft(ZeitSigAusPyy,8192);
Pyyy=Y.*conj(Y)/8192;

Ergebnis: Pyy ungleich Pyyy!!! Warum?? ...1000 Dank!

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da liegt das Problem:

ZeitSigAusPyy = real(ifft(Pyy,8192));

Du wirfst den Imaginärteil einfach weg, der gehört aber zum Signal dazu.

Autor: TP78 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Phase schmeiße ich weg (oder besser: In meiner späteren Anwendung 
habe ich sie gar nicht, da ein Spektrumanalyser sie nicht messen kann) - 
möchte quasi nur ein Zeitsignal, was ebenfalls das selbe Spektrum hat 
wie das Spektrum der original-Zeitfunktion!
Bei einem Zeitsignal, welches aus mehreren Sinusfunktionen gleicher 
Amplitude besteht klappt das! ...doch wehe sie haben unterschiedliche 
Amplituden! ...wie kommt das? Danke für weitere Tipps

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wird was draus:
es gilt: Pyy = abs(Y).^2
also: ZeitSigAusPyy = real(ifft(sqrt(Pyy),8192));

Autor: Unit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias hat Recht. Mit dem Imaginärteil schmeißt man NICHT (NUR) die 
Phase weg! Das sind komplexe Werte, und keine Polarkoordinaten! Also 
statt real einfach abs benutzen, und natürlich sqrt nicht vergessen.

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.