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

Fouriertransformation liefert keine/falsche Frequenzen

 

Flex
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.05.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 21.05.2011, 18:09     Titel: Fouriertransformation liefert keine/falsche Frequenzen
  Antworten mit Zitat      
Hallo,
ich arbeite noch nicht allzu lange mit Matlab, wobei das reinkommen bisher auch danke dem Forum recht schnell und gut ging. Nun stehe ich allerdings schon eine Weile vor einem Grundlegenden Problem:

Kurz zusammengefasst: ich habe mit einer Hochgeschwindigkeitskamera Aufnahmen gemacht, die in etwa eine Linie zeigt die hochfrequent hin und her schwankt. Die dominante Frequenz dieser Schwankung möchte ich nun berechnen. Da es auch durch die Bildbearbeitung zu Ungenauigkeiten kommt ist es natürlich alles andere als eine perfekte Sinusschwingung, also möchte ich mittels Fouriertransformation die Frequenzen ablesen.

Bilder sind mit einer Frequenz von 1/20.000 aufgenommen, vorerst arbeite ich mit 600 Stück, also eine Zeit von 0,03s. Allerdings liefert er mir als einzige Frequenz eine nahe 0, also mache ich höchstwahrscheinlich etwas falsch beim Auftragen der Frequenz. Die Werte schwanken alle ca zwischen 90 und 120.

Code:
%Positionen stehen in A0 (600 Punkte)
dt=1/20000;
%damit ich auf 600 komme -dt
end=0.03-dt;
t=0:dt:end;
plot(t,A0);grid on
%
%Transformation
Y=fft(A0);
n=size(A0,2)/2;
ampspec=abs(Y)/n;
frequenz=(0:599)/(2*n*dt);
figure;
plot(frequenz,ampspec(1:600));grid on


Alles was passieren soll sind bisher ein Plot der Positionen und darunter eben die Fouriertransformation.
Als Bild angehängt habe ich mal die Positionsverteilung über der Zeit.

Bin für Hilfe in jeder Form dankbar!

Gruß, Flex

Position.jpg
 Beschreibung:

Download
 Dateiname:  Position.jpg
 Dateigröße:  67.71 KB
 Heruntergeladen:  670 mal
Private Nachricht senden Benutzer-Profile anzeigen


lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 22.05.2011, 11:17     Titel:
  Antworten mit Zitat      
Hi,

du solltest es vermeiden Variable so zu benennen, dass deren Namen mit in Matlab eingabauten Befehlen übereinstimmen, sowie: end. hier ein Beispiel wie Fourier funtioniert:

Code:


Fs = 100;% Hz  Sampling Frequenz
Signallaenge = 1000; % Samples
Dauer = Signallaenge*1/Fs;
t = 0 :1/Fs:Dauer-1/Fs;

F1 = 2; %Hz
F2 = 5; % Hz
y = 2*sin(2*pi*F1*t)+4*sin(2*pi*F2*t);

Y = fftshift(abs(fft(y)));

Ahalf = Y/length(Y);
nyquist = Fs/2;

f = linspace(-nyquist,nyquist,length(Y));

plot(f,Ahalf)

 




Gruss,

lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
Flex
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.05.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 22.05.2011, 19:00     Titel:
  Antworten mit Zitat      
Danke für die Hilfe und den Tipp. Das hatte ich auf die schnelle etwas unsauber gemacht. Ich habe mal versucht mich an deine Vorlage zu halten, lande aber sofort wieder beim selben Problem...
Jetzt sieht mein Code folgendermaßen aus:
Code:
%Frequenz
Fs = 20000;
%Bilder
Signallaenge = 600;
%Dauer der Aufnahme
Dauer = Signallaenge*1/Fs;
%Zeitvektor
t = 0 :1/Fs:Dauer-1/Fs;
%Plot der Positionen
subplot(2,1,1);
plot(t,a0test);grid on
xlabel('Zeit (s)');
ylabel('Position')
%Transformation, a0test aus anderer Routine
Y = fftshift(abs(fft(a0test)));

Ahalf = Y/length(Y);
nyquist = Fs/2;

f = linspace(-nyquist,nyquist,length(Y));
%Plot
subplot(2,1,2);
plot(f,Ahalf);grid on
xlabel('Frequenz (Hz)');
 

Wobei a0test 600 Positionsdaten gespeichert hat.
Das ausgegebene Bild habe ich angehängt, kann ich meinen Augen nicht stimmen... Irgendwo muss noch Fehler liegen.

Fig1.jpg
 Beschreibung:

Download
 Dateiname:  Fig1.jpg
 Dateigröße:  95.08 KB
 Heruntergeladen:  630 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Flex
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.05.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 24.05.2011, 13:14     Titel:
  Antworten mit Zitat      
Ich habe mir den Versuch nach Vorlage von lilov nochmal genau angeschaut und bemerkt, dass im Gegensatz zu meinem, der Hochpunkt bei ca. 16 ist, bei mir war er bei 0. Eine Frequenz von 16Hz ist absolut unrealistisch, wenn allerdings 16 Bilder gemeint wären würde das in etwa mit dem übereinstimmen was ich aus der Theorie her erwartet hätte...

Kann es sein, dass also der Fehler in diesem Bereich liegt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Flex
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.05.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 01.06.2011, 08:56     Titel:
  Antworten mit Zitat      
Ich habe meinen Fehler gefunden. Nur für den Fall, dass noch jemand an einem ähnlichen Problem hängt, schreibe ich schnell rein wie es jetzt bei mir läuft.

Das Problem lag an den Werten. Diese schwanken bei mir zwischen ca 90 und 120. Damit kommt die Funktion fft wohl nicht klar. Ich habe also einfach den Mittelwert von jedem Wert abgezogen, damit die "Ruhelage" in etwa bei 0 liegt und schon klappt es.
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 - 2024 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.