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

Lineare Interpolation v. Daten aus Frequenzanalyse per FFT

 

navpp
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 14.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2010, 13:49     Titel: Lineare Interpolation v. Daten aus Frequenzanalyse per FFT
  Antworten mit Zitat      
Hallo!

Es fällt mir leider etwas schwer mein Problem zu verbalisieren, darum konnte ich mein Problem nicht mit der Suchfunktion lösen.

Grundsätzlich habe ich 4 Messsignale Kraft über Zeit, die ich einer Frequenzanalyse per FFT unterziehe. Das mache ich so:

Code:

function [YA,YB,YC,YD,f] = makefft(position) %position enthält 1024x4 double-Werte

Fs = 32;  %Aufnahmefrequenz
L = length(position);
y = position;

NFFT = 2^nextpow2(L); % Naechste Potenz von 2 für L
assignin('base','NFFT',NFFT);

Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

%Aufteilen der Faktoren
YA = Y(:,1);
YB = Y(:,2);
YC = Y(:,3);
YD = Y(:,4);

end
 


In einer anderen Funktion wird dann der y-Wert zu jedem Wert (Frequenz f) berechnet:

Code:

freq_value = 2*abs(Y(1:NFFT/2+1));
 


Diese Vorgangsweise habe ich aus einem FFT-Tutorial von hier und ich muss leider zugeben, dass ich das Prozedere noch nicht ganz verstanden habe, ich arbeite aber daran. Grundsätzlich funktioniert das jedoch einmal recht gut.

Hier das eigentliche Problem:

Ich muss die einzelnen Werte in gewisse Frequenzbereiche einteilen. Das mache ich über eine Reihe an If-Anweisungen, wo einfach alle y-Werte in einem Bereich addiert werden. Die Werte in diesen Bereichen sollen jetzt aber mit Ergebnissen der Vergangenheit einer Person, die leider nicht mehr greifbar ist, verglichen werden. Die Vorgangsweise wurde damals von der entsprechenden Person so beschrieben:


Zitat:

interp: Da die Messdaten mit einer Frequenz von 32 Hz aufgezeichnet werden liefert die Frequenzanalyse einen Wert für alle 1/32 Hz. Um jedoch genau auf die gewünschten Frequenzbereiche zu kommen, ist es nötig das Frequenzspektrum zu interpolieren. In diesem Fall wird eine lineare Interpolation herangezogen. Es wird für alle 0,01 Hz ein Punkt berechnet.



Code dazu konnte ich leider keinen ausfindig machen. Kann mir jemand helfen das entsprechend dieser Beschreibung umzusetzen?

mfg, navpp
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2010, 15:41     Titel:
  Antworten mit Zitat      
Die FFT liefert dir Frequenzanteile im Abstand 1/32=0.031. Der Beschreibende wünscht sich aber eine Auflösung von 0.01Hz, also dreimal so fein. Um nun die zwei Werte zwischen zwei tatsächlich berechneten Stützstellen zu bekommen, verbindet er immer zwei benachbarte Frequenzen mit einer Geraden und liest die zwei fehlenden Zwischenwerte bei den gewünschten Frequenzen an eben dieser Geraden ab.
Private Nachricht senden Benutzer-Profile anzeigen
 
navpp
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 14.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2010, 15:49     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Antwort! Smile

Du hast sehr treffend auf den Punkt gebracht was ich mit Matlab nicht hinbekomme! Smile

Mein erster Versuch war das Benutzen von 'interp'

Code:

freq_value = interp(freq_value,3);
 


Allerdings passt dann die Länge des Vektors f (auf der x-Achse aufgetragen; in dem der jeweilige Frequenzwert steht) nicht zu der Länge des Vektors mit den y-Werten.

Bin für jeden weiteren Hinweis dankbar!
Private Nachricht senden Benutzer-Profile anzeigen
 
fekal
Forum-Century

Forum-Century



Beiträge: 124
Anmeldedatum: 08.02.11
Wohnort: Mainz
Version: 2017b
     Beitrag Verfasst am: 22.08.2011, 16:56     Titel:
  Antworten mit Zitat      
Hi,
es ist zwar schon ein bisschen Zeit verganen, aber für alle die das gleiche Problem haben:

versuch mal
Code:

damit kannst du noch mehr einstellen. Schau mal in der Hilfe, da steht auch was zur Arraygröße

Gruß fekal
Private Nachricht senden Benutzer-Profile anzeigen
 
Akustiker

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2011, 12:17     Titel:
  Antworten mit Zitat      
Hallo,

ich habe gerade etwas gelesen, was so nicht ganz korrekt ist ...


Wenn du von einem Zeitsignal eine FFT macht, und eine Frequenzauflösung von 0,031 erhällst, dann darfst du NICHT einfach so linear interpolieren DENN
In einer Linie steckt die Energie von zb 1 - 1,031 Hz ... Wenn du eine FFT mit 3 mal so großer Blocklänge machst, dann fällt dir bestimmt auf, dass die Amplitude im gesamten etwas geringer ausfällt je kleiner das delta F wird.
Weil eben die Energie auf viel mehr Linien verteilt wird.

Wenn beispielsweise ALLE deine Linien eine Amplitude von 1 N haben und du .. 1000 Linien hast, wäre deine Summe 31,5 N (quadratische addition weil energetisch betrachtet)
wenn du nun einfach je Punkt noch 2 Linien dazurechnest, dann verdreifachst du die Linien .. hast also 3000 Linien. aber da du linear interpoliert hast haben ALLE 3000 Linien nun 1 N als Amplitude ... als summe also 54,7 N (wieder quadratisch addiert und danach gewurzelt..) ... richtig wäre aber wenn jede Linie nun nur noch 0,577 N als Amplitude hätte , denn 1N² (Energetisch gesehen) / 3 = 0,333 N² und Wurzel von 0,3333 N² = 0,577 N

nur um es physikalisch richtig zu stellen.

Im frequenzbereich darf niemals linear interpoliert werden, wenn dann überhaupt nur energetisch, aber selbst das ist nicht genau.
 
fekal
Forum-Century

Forum-Century



Beiträge: 124
Anmeldedatum: 08.02.11
Wohnort: Mainz
Version: 2017b
     Beitrag Verfasst am: 01.11.2011, 17:01     Titel:
  Antworten mit Zitat      
ja,

aber wenn ich richtig liege, ist die

Frequenzabhängigkeit linear und die

Wellenlängenabhängigkeit quadratisch

Grüße
fekal
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.