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 for Spectral Analysis

 

Atmos_kk
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 13:20     Titel: FFT for Spectral Analysis
  Antworten mit Zitat      
Hallo zusammen,

ich bi gerade dabei eine Schwingungsanalyse durchzuführen. Hierzu benötige ich die FFT. Soweit auch ganz gut, soll heißen mit der Kontrolle an meinem kompletten Ausgangssignal erreiche ich das selber Ergebnis wie bei meiner FFT in Matlab.

Nun mein Problem, einige Werte aus der Beispieldatei habe ich einfach mal nach Bauchgefühl eingesetzt allerdings würde es mich schon interessieren warum das so gut funktioniert und warum gerade diese Werte!

Konkreter Fall:


% .txt-Datei in Matlab einlesen ( Matrixform )

rohdaten=dlmread('a4.txt', '\t', [23 0 68563 1]);

% Aufteilen in Spalten

time=rohdaten(:,1);
acceleration=rohdaten(:,2);


% FFT 68541/34270/34271

Y=fft(acceleration,68541);
%Y(1)=[];

hier die 1. Frage: Wozu und
welchen Sinn hat das
mit dem Y(1)=[]????

% Ploten der Rohdathen-FFT

Pyy=Y.*conj(Y)/68541;

2. Frage: Die 68541 sind
Anzahl an Messwerten, die
ich auch für f wieder
benötige aber warum dann
34270 im folgenden Teil
der Formel???? Habe einfach
die Hälfte abgerundet ge-
nommen, weil es im Beispiel
von Matlab auch so ungefähr
gepasst hat. Genauso ver-
stehe ich nicht die 34271 bei
dem Plot nicht!!! Hab ich ein-
fach den Wert aus f ge-
nommen +1.
f=4096/68541*(0:34270);

subplot(211)
plot(f,Pyy(1:34271),'k')
axis([0 500 0 50])
title('power spectral density')
xlabel('Frequenzy (Hz)')




Hoffe mir kann da jemand helfen!


Außerdem würde es mich interessieren wie alle Ihre Matlabschriebe so schön einfügen könne!!!

Greetz
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.05.2011, 14:25     Titel: Re: FFT for Spectral Analysis
  Antworten mit Zitat      
Hallo Atmos_kk,

Zur FFT: http://www.gomatlab.de/fft-umfassendes-beispiel-t777.html

Um den Text zu formatieren kannst Du entweder die Buttons verwenden, die oberhalb des Eingabefeldes stehen: drücke einfach mal drauf und schaue was passiert.

Ich füge die Tags lieber manuell ein. Also z.B. [ c o d e ] am Anfang und [ / c o d e ] am Ende von Matlab-Programmabschnitten (ohne Leerzeichen - die sind hier nur nötig, damit es nicht als Format-Tag interpretiert wird.

Willkommen im Forum! Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 14:39     Titel:
  Antworten mit Zitat      
Hallo,

zum leichten Teil deiner Frage: Wenn du die Code-Umgebung hier im Forum benutzt, dann wird Matlab-Code schön formatiert. Einfach auf den Knopf mit 'Code' drücken.

Jetzt zur eigentlichen Frage:
Dein Problem scheint nur zum Teil bei Matlab zu liegen, sondern eher bei dem Verständnis der Fourier Transformation. Hierzu sind zunächst ein paar Grundlagen notwendig, z.B. das sog. Abtasttheorem. Ein Signal kann dem zufolge dann exakt rekonstruiert werden, wenn die Abtastung mit (mindestens) der doppelten maximal auftretenden Frequenz erfolgt.
Umgesetzt auf dein diskretes Problem bedeutet das, dass du im Zeitbereich doppelt so viele Werte wie im Frequenzbereich hast (einfach ausgedrückt), d.h. das dein Vektor im Frequenzbereich theoretisch nur halb so lang ist wie der im Zeitbereich. Wenn du dir den Vektor in Matlab anschaust, dann besitzt dieser jedoch die gleiche Länge wie der Eingabevektor. Das kommt daher, dass die Fouriertrafo auch negative Frequenzen liefert, welche jedoch achsensymmetrisch sind (sie könnten also theoretisch auch ohne Informationsverlust weggelassen werden). Das beantwortet jedoch deine Frage, warum nur die Hälfte der Punkte geplottet werden. "Normalerweise" interessieren einen nur die positiven Frequenzen. Die andere Frage bzw. deren Antwort bezieht sich auf die Lage des Ursprungs, also dem Wert für den Offset (Frequenz = 0). Schau dir hierzu am Besten mal die Hilfe für fft() (evtl. noch die zu fftshift()).

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 07:32     Titel:
  Antworten mit Zitat      
Aber hallo,

vielen Dank erstmal, sieht mittlerweile vom Verständnis her besser aus.

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