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!
Da liegt das Problem: ZeitSigAusPyy = real(ifft(Pyy,8192)); Du wirfst den Imaginärteil einfach weg, der gehört aber zum Signal dazu.
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
So wird was draus: es gilt: Pyy = abs(Y).^2 also: ZeitSigAusPyy = real(ifft(sqrt(Pyy),8192));
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.