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

IFFT fehlerhafte Anzeige der Zeit Achse

 

PumPui
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 24.08.23
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2023, 13:15     Titel: IFFT fehlerhafte Anzeige der Zeit Achse
  Antworten mit Zitat      
Hallo an alle,

aktuell beschäftige ich mich mit der Auswertung einer abgehängten Decke die per Laservibrometer aufgrund Ihrer Resonanzfrequenzen untersucht wird.

Hierbei werden Datensätze im ASCII Format importiert, Fouriertransformiert, energetisch gemittelt und zurück in den Zeitbereich transofrmiert, um hier über die Funktion Findpeaks später den mittleren Dämpfungsgrad zu ermitteln.

Nun scheint aber bei der IFFT ein Fehler aufzutreten. Die Zeitachse scheint nach linksverschoben. Sämtliche Lösungsansätze bringen mich nicht weiter und eine mehrmalige Fehlersuche und analyse brachte mich nicht darauf wo der Fehler steckt.
Vielleicht kann mir jemand von euch auf die Sprünge helfen.
Danke schonmal im vorraus!!

Fabi

Hier ist der Code

Code:


%%extrahieren der Geschwindigkeits- und Zeitwerte des ASCII Datensatzes

data_G1= data_v1.data(1:end,2);
data_T= data_v1.data (1:end,1);

%% FFT Berechnung

fa = 1/diff(data_T (1:2)); % Abtastfrequenz (1/T)
Ts = 1/fa; % Abtastrate
fn = fa/2.56 ; % Nyquistfrequenz

%Ermitteln der Abtastpunkte für FFT

N = length(data_G1); % gewünschte FFT-Länge


df = fa/(N-1); % Frequenzauflösung


f=(-fa/2:df:fa/2); %Frequenzachse um Nullpunkt zentriert



for i = 1:numVectors
    % Name des Vektors
    vectorName = sprintf('data_G%d', i); %erzeugen eines Arrays

    % Lade den Vektor
    timeVector = eval(vectorName);
    % Führe die FFT durch
    frequencyVector = fft(timeVector);
    frequencyVector = abs(fftshift(frequencyVector));
    %frequencyVector=frequencyVector(1:N/2);

    % Speichere den frequenzbasierten Vektor
    frequencyVectors(i, :) = frequencyVector;

    % % Zeige den frequenzbasierten Vektor an
    % disp(['Frequenzbasierten Vektor ', vectorName, ':']);
    % disp(frequencyVector);
end


%Beispiel für die Mittelung
numMess = 3; %Anzahl der Messungen pro Messposition

Position1=sqrt(1/numMess*(sum(frequencyVectors(1:3, 1:end)).^2));

%%IFFT

% Erzeuge die Zeitachse für den positiven Zeitbereich
timeAxis =(((0:length(Position1)-1)*Ts));


 tVector1=ifftshift(Position1);
 tVector=abs(ifft(tVector1));
   
   

figure(4);
hold on

plot(timeAxis, 2*tVector)

%xlim([0 2])
legend('tVector')
hold off

 
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.