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 Wasserfalldiagramm

 

Rene123
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 01:10     Titel: FFT Wasserfalldiagramm
  Antworten mit Zitat      
Hallo zusammen,
ich hab da ein Problem. Und zwar möchte ich ein Wasserfalldiagramm einer FFT erstellen. Die Messdaten habe ich in einer Matrix (4x251172) mit 2 Zeilen Messdaten und 1 Zeile die Drehzahl und noch eine Zeile Drehzahl die ich aber nicht benötige.
Das Wasserfalldiagramm soll dann die Frequenzen und Amplituden über der Drehzahl zeigen.
Das einzige was mir dazu bisher eingefallen ist, ist die Matrix aufsplitten, immer die Messwerte von einem Drehzahlbereich von z.B. 100 min^-1 in eine separate Matrix packen und dann davon eine FFT machen. Das dann wieder zu einer Matrix zusammen bauen und plotten.

Jetzt meine frage gibt es eine elegantere Lösung?
Wie kann ich meine Matrix entsprechend der Werte der Drehzahl aufteilen?

Ich hoffe das ist halbwegs verständlich.

Grüße Rene
Private Nachricht senden Benutzer-Profile anzeigen


ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 08:15     Titel: Aufteilung der Matrix
  Antworten mit Zitat      
Hallo,

zum Thema Aufteilung hilft dir die logische Indexierung sehr weiter - gerichtet nach deiner Drehzahl die ja in der 3. Zeile ist ging das dann so:

Code:


Mat = A(:,A(3,:) == drehzahl);

 


So speichert er jede Spalte in der die dritte Zeile deiner Drehzahl entspricht in eine neue Matrix! Die Variable drehzahl kannst du wie erforderlich gestalten!

gruß Rob
Private Nachricht senden Benutzer-Profile anzeigen
 
Rene123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 12:14     Titel:
  Antworten mit Zitat      
hi das scheint genau das zu sein was ich vorerst brauche.
jetzt komme ich aber nicht drauf wie ich einen bereich von Drehzahlen da raus bekomme.
Also ich möchte immer alle Werte im Bereich von 100 Umdrehungen in eine neue Matrix schreiben. Und das sind dann auch immer unterschiedlich viele.

also so in etwa nur das das nicht funktioniert.
Code:

[Mat] = [MAT1](:, [MAT1](3,:) >= drehzahl-100 : <= drehzahl );
 
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 12:46     Titel:
  Antworten mit Zitat      
Hallo,

das mit dem Bereich sollte so gehen:

Code:

Mat = Mat1(:,Mat1(3,:)>80 & Mat1(3,:)<120);
 


Als Beispiel
Private Nachricht senden Benutzer-Profile anzeigen
 
Rene123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 21.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 18:03     Titel:
  Antworten mit Zitat      
ok vielen Dank für die Hilfe.
habe aber festgestellt das das vielleicht nicht so das schlauste vorgehen für eine FFT ist, da ja so die Reinfolge der Messwerte bei schwankender Drehzahl geändert wird. Habe das jetzt wie folgt gelöst.

Code:


load 'messung018.mat'

Messwet1 = Messung018.Y(1).Data;
Messwet2 = Messung018.Y(2).Data;
Drehzahl_gemessen = Messung018.Y(3).Data;
Drehzahl_vorgabe = Messung018.Y(4).Data;

Ts = 0.001;

N = size (Messwet1);
N = N(2);                               % bestimmung der Anzahl Messpunkte

Tmax = (N-1)*Ts;                        % gesamt Messzeit
t=0:Ts:Tmax;                            % Vektor für Zeitachse

fs = 1/Ts;                                  % Samplingfrequenz/Abtastfrequenz
f=0:fs/(N-1):fs/2;                      % Verktor für Frequenzachse  



if rem(N,2) ~= 0                        % Es wird eine gerade Anzahl von Schritten benoetigt die FFT füllt dann automatisch mit Nullen auf
    N = N+1;
end

Nfft = floor(N/100);                    % Aufteilen der Messpunkte in 100 Teilbereiche und Abgerundet

if rem(Nfft,2) ~= 0                     % Es wird eine gerade Anzahl von Schritten benoetigt, die FFT füllt dann automatisch mit Nullen auf
    Nfft = Nfft-1;
end
ffft=0:fs/(Nfft-1):fs/2;                % Erzeugung Frequenzachse für Wasserfalldiagramm


% Brechnungen für Wasserfalldiagramm%%%%%%


WF1 = zeros( 100 , Nfft/2);               %Vordefinition der größe der Matrix
WF2 = zeros( 100 , Nfft/2);               %Vordefinition der größe der Matrix
n_achse = zeros(100,1);                   %Vordefinition der größe des Vektors


% FFT Analyse für die einzelnen Teilbereiche
for k = 0:1:99

   FFT1 = fft(Messwet1((k)*Nfft+1:(k+1)*Nfft),Nfft);
   FFT1 = FFT1(1:(Nfft)/2);
   FFT1 = abs(FFT1);
   
   WF1(k+1,1:Nfft/2 ) = FFT1;
   
   FFT2 = fft(Messwet2((k)*Nfft+1:(k+1)*Nfft),Nfft);
   FFT2 = FFT2(1:(Nfft)/2);
   FFT2 = abs(FFT2);
   
   WF2(k+1,1:Nfft/2 ) = FFT2;
   
   % Berechnung der mittleren Drehzahl im Teilbereich
   n_achse(k+1) = (Drehzahl_gemessen((k)*Nfft+1)+ Drehzahl_gemessen((k+1)*Nfft))/2;

end


figure (6)
hold on;
waterfall (ffft,n_achse,WF1)
title(' Wasserfalldiagramm Sensor 1 ');
xlabel(' Frequenz [Hz] ')
ylabel(' Drehzahl  (min^-1)  ')
zlabel(' Amplitude  ')
hold off;

 


Im Bild seht ihr wie es jetzt aussieht.
und noch eine Frage kann ich in meinem Programm in den ersten Zeilen beim aufrufen die Zahl 018 durch eine Variable x ersetzen damit ich wenn ich eine andere Messung laden möchte nicht alle 5 Einträge ändern muss. oder Vielleicht besser gleich den ganzen Text mesung018.

wasserfalldiag.jpg
 Beschreibung:

Download
 Dateiname:  wasserfalldiag.jpg
 Dateigröße:  384.97 KB
 Heruntergeladen:  374 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.