WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

FFT in Matlab implementieren, Ergebnis ist gespiegelt darges

 

to_ks
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 20:53     Titel: FFT in Matlab implementieren, Ergebnis ist gespiegelt darges
  Antworten mit Zitat      
Hallo Leute,
hab mich erst eben im Forum angemeldet.
Habe auch gleich meine erste Frage. Ich bin noch blutiger Anfänger und komme mit einer Aufgabe nicht ganz zurecht.
Ich weiß nicht ob es an der Mathematik dahinter liegt (evtl. ist ja da schon der Fehler), oder am Code.
Wäre für euer schnelle Hilfe sehr dankbar.
Ich muss die FFT in Matlap implementieren, also nicht die vorhandene MATLAB Funktion fft() verwenden. Sondern diese Funktion selber schreiben.
Mit DFT hat es auch recht gut funktioniert.
Das Ergebnis sieht gut aus.

Code:
for m=0:N-1
   
    sum =0;
   
    for n=0:N-1
       
        sum = sum + (X(n+1)* exp((-1i)*((2*pi*m*n)/N)));
    end
   
x(m+1)=sum;

end

x = abs(x);
stem(x)
 


N ist die Anzahl der Signale und wird durch das Messsignal selber gegeben. (ist ein anderes Unterprogramm)

Dasselbe nun als FFT.

Code:
for m=0:N-1
   
    sumG =0;
    sumU =0;
    h=0;
   
    for n=0:N/2-1
       
        h=h+1;
        sumG = sumG + (X(h)* exp((-1i)*((2*pi*m*n*2)/N)));
        h=h+1;
        sumU = sumU + (X(h)* exp((-1i)*((2*pi*m*n*2)/N)));
    end
   
x(m+1)=sumG+sumU;

end

x = abs(x);
stem(x)


Das Ergebnis stimmt jedoch mit der internen Matlab Funktion fft() nicht überein.
Woher kommt diese Spiegelung, was mach ich falsch.
Kann es mir einfach nicht erklären

Danke für jeglichen Hinweis
Gruß
Timo

DFT.jpg
 Beschreibung:
Die DFT nach der ich es Programmiert habe.

Download
 Dateiname:  DFT.jpg
 Dateigröße:  7.29 KB
 Heruntergeladen:  694 mal
FFT.jpg
 Beschreibung:
Die FFT nach der ich es Programmiert habe.

Download
 Dateiname:  FFT.jpg
 Dateigröße:  26 KB
 Heruntergeladen:  702 mal
Private Nachricht senden Benutzer-Profile anzeigen


Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 25.06.2013, 23:49     Titel:
  Antworten mit Zitat      
Hallo,

die FFT lässt sich glaube ich nicht so einfach programmieren.... glaube ich Very Happy Dass, was du unten als FFT angegeben hastist nur der Ansatz für die Zerlegung, die bei der FFT durchgeführt wird (Vermutung...). Hast du das zufällig aus diesem Buch:

Werner, M.: Digitale Signalverarbeitung mit MATLAB: Grundkurs mit 16
ausführlichen Versuchen. Vieweg+Teubner Verlag, 2008 (Studium Technik). –
ISBN 9783834804570


Da steht es nämlich als erster Ansatz oder Einleitung für den Radix2 Algorithmus drin (Hab ich gerade zufällig gesehen, weil ich mich neulich auch mal damit genauer auseinander gesetzt habe).

Schau am besten mal in das Buch. Da ist der Algorithmus ausführlich beschrieben. Oder Google Smile

Zu dem gespiegelten Spektrum:
Wenn du ein reales Spektrum mit der DFT zerlegst, erhältst du ein komplexes Spektrum (liegt an der DFT). Das komplexe Spektrum hat für k> N/2 die komplex Konjugierten Werte von k < N/2. Das Spektrum ist zu N/2 symmetrisch.

Wenn du dann aus dem Spektrum mit der inversen FFT dein Signal zurückzauberst, heben sich die Imaginärteile wieder auf (da komplex konjugiert) und du erhältst wieder dein reales "Mess"-Signal.

Um dir die korrekte Amplitude des realen Signals in Matlab anzeigen zu lassen, muss du die Hälfte des Spektrums nehmen und verdoppeln.

Schau am besten mal in das Buch und in die Matlab Hilfe zu fft().

Anbei ein kleiner Ausschnitt aus einer Hausaufgabe, die ich dazu mal machen musste. Sind nur 2,5 Seiten. Vielleicht hilfts auch ein bisschen.

Viele Grüße und viel Erfolg!

DFT_kurz.pdf
 Beschreibung:

Download
 Dateiname:  DFT_kurz.pdf
 Dateigröße:  80.48 KB
 Heruntergeladen:  7037 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
to_ks
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2013, 02:03     Titel:
  Antworten mit Zitat      
Hallo
erst mal danke für deine Info.

Es ist schon spät und ich hab mir deinen Anhang noch nicht genauer angeschaut.

Aber klar die info hab ich vergesse zu erwähnen Mad , diese ist natürlich nicht die richtige FFT. wie soll ich sagen, es ist nur der "erste Durchgang" der FFT.
das zerlegen in Gerade und ungerade Signale lässt sich ja solange durchführen bis ich nur noch 2 Signale habe.

Aber um das Prinzip zu veranschaulichen und das es wesentlich schneller arbeitet, reicht mir dieses Darstellung. Also das ich das Signal nur einmal in gerade und ungerade indizierte Signalwerte aufteile.

Auch das mit der Spiegelung war wohl die falsche Wort Wahl
Es stimmt das es natürlich ist das sich das Spektrum durch die positiven und negativen Anteile der Komplexenzahl speigelt.
Den Fehler wo ich erhalte ist eine zusätzliche "Spiegelung" (eigentlich ist es keine Spiegelung weiss nur nicht wie ich es Nennen soll).

Ich hänge mal kurz Bilder an um mein Problem zu zeigen.
Ist denk ich einfacher wie es zu erklären.
Am Beispiel des folgenden Signales
Code:
N = 1024;


t = 0 :N-1;

f=N/512;

X = sin(2*pi*f*t/N)+ sin(2*pi*f*3*t/N);  % sinus
 %X =sawtooth(t) ;
% X = t
plot(X)



Gruß
timo

ps.
oh verdammt, kann ich dir Bilder im Anhang irgendwie kleiner machen, dachte da kommen nur Vorschaubilder zum draufklicken. das wird ja etwas unübersichtlich.

Das Spektrum vergrößert meiner FFT.jpg
 Beschreibung:
hier der interessante Teil des Spektrums nochmal vergrößert.

Download
 Dateiname:  Das Spektrum vergrößert meiner FFT.jpg
 Dateigröße:  37.06 KB
 Heruntergeladen:  684 mal
Das Spektrum mit meiner FFT.jpg
 Beschreibung:
hier das Spektrum mit meiner FFT. Auf der linken und rechten Seite sieht es gut aus, aber in der Mitte bekomme ich diese "Spiegelung". Woher, wieso?

Download
 Dateiname:  Das Spektrum mit meiner FFT.jpg
 Dateigröße:  40.32 KB
 Heruntergeladen:  667 mal
Spektrum mit Matlab internen fft().jpg
 Beschreibung:
DAs Spektrum mit der internen Matlab fft.
Schön zu sehen die Spiegelung an der rechten Seite, das ist soweit OK und verstanden.

Download
 Dateiname:  Spektrum mit Matlab internen fft().jpg
 Dateigröße:  37.5 KB
 Heruntergeladen:  687 mal
Signal.jpg
 Beschreibung:
Das "TEst-Signal"

Download
 Dateiname:  Signal.jpg
 Dateigröße:  46.84 KB
 Heruntergeladen:  699 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.