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

Extremalwerte jedes Zyklus

 

Boingenau
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2016, 13:46     Titel: Extremalwerte jedes Zyklus
  Antworten mit Zitat      
Hallo zusammen,

ich untersuche gerade die Messwerte(Kraft) einer zyklischen Belastung (Zug und Druck). Für die weitere Berechnung brauche ich nun den absoluten Maximal- und Minimalwerte aus jedem Zyklus.
Das Problem dabei ist, dass die Kraft innherhalb eines Zyklus auch stark schwankt (mal zu und mal abnimmt). Dadurch kann ich mir das Extrema z.B. nicht mit einer Schleife wie
Code:
%
if (Kraft(k)>Kraft(k-1) && (Kraft(k)>Kraft(k+1))

bestimmen, da ich dadurch sehr viele Extrema für jeden Zyklus bekommen würde.

Ich hatte mir überlegt, das wie folgt zu lösen:
1. Bestimmung der Indizes bei welchen die Kraft das Vorzeichen wechselt (Nulldurchgang)
Code:
%
vorzeichen=sign(Kraft);
PunkteLastumkehr=find(diff(vorzeichen));


2.
Code:
%
Druckbereich=(Kraft.*(vorzeichen<0));
Zugbereich=(Kraft.*(vorzeichen>0));


3. Wenn n=PunkteLastumkehr, wären die einzelnen Minimas wie folgt zu bestimmen:
Code:
%
[minwerte,minzeile]= min(Druckbereich(n(0):n(1)));
[minwerte,minzeile]= min(Druckbereich(n(2):n(3)));
[minwerte,minzeile]= min(Druckbereich(n(4):n(5)));


leider schaffe ich es nicht, dies in eine Schleife zu packen. Mein Ansatz war folgender:

Code:
%
nmin = 0;
for n=1:length(n);
    nmin=nmin+1
    min_value(nmin)=min(Druckbereich(n:(n+1)));
end;


Kann mir vielleicht jemand einen Tipp geben, wo mein Fehler liegt, oder wie man das Problem vielleicht sonst lösen könnte? Hoffe ich habe mich einigermaßen verständlich ausgedrückt. Smile

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.10.2016, 15:00     Titel:
  Antworten mit Zitat      
Hallo,

ohne Daten und ohne zu wissen, wie die einzelnen Schnipsel zusammengehören, ist das schwer nachzuvollziehen. Wie werden denn die Zyklen voneinander abgegrenzt?

Zu 4.: vermutlich möchtest du eher sowas
Code:
for k=1:length(n);
    min_value(k)=min(Druckbereich(n(k):n(k+1)));
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2016, 15:34     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für deine schnelle Antwort Harald. Ich hab im Anhang noch ein Bild hochgeladen. Hoffe damit wird meine Frage verständlich. Du hast Recht, ich wollte eher so einen Ansatz:

Code:
%
kmin = 0;
for k=1:length(n);
    kmin=kmin+1
    min_value(kmin)=min(Druckbereich(n(k):n(k+1)));
end;


Wenn ich diesen allerdings verwende, stehen im ausgegebenen Vektor min_value nur die ersten 49 Werte (49=Anzahl Zeilen von n) des Vektors des Druckbereiches.

20161001_152126.jpg
 Beschreibung:

Download
 Dateiname:  20161001_152126.jpg
 Dateigröße:  261.09 KB
 Heruntergeladen:  317 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.10.2016, 16:01     Titel:
  Antworten mit Zitat      
Hallo,

und wie soll ich dir nun weiterhelfen ohne zu wissen, was n ist?

Warum verwendest du nicht k statt kmin?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2016, 16:46     Titel:
  Antworten mit Zitat      
Hallo

Der Vektor n enthält die Zeilennummer des Vektors der Kraft, bei dem sich das Vorzeichen der Kraft ändert. Also z.B.

Kraftvektor=[1 7 1 -1 -7 -1 1 7 1 -1]

n=(4,7,10)

n=find(diff(vorzeichen));
vorzeichen=sign(Kraft);

Der erste Zyklus ginge dann also von Zeile 0 bis Zeile 7 des Kraftvektors. Hierfür habe ich dem Vektor n auch in der ersten Zeile eine 0-Zeile eingefügt.

Das mit kmin war ein Versuch. Wenn ich nur
Code:
%
for k=1:length(n);
    min_value(k)=min(Druckbereich(n(k):n(k+1)));
end;

eingebe, kommt die Fehlermeldung

Subscript indices must either be real positive integers or logicals.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2016, 17:10     Titel:
  Antworten mit Zitat      
Ok der Fehler lag an der eingefügten 0-Zeile. Mit

Code:
%
for k=1:(length(n)-1);
    min_value(k)=min(Druckbereich(n(k):n(k+1)));
end;

funktionierts.

Danke für die Hilfe Harald.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2016, 17:34     Titel:
  Antworten mit Zitat      
Kann mir vielleicht noch jemand nen Tipp geben, wie ich mir den, zu den Werten von min_value(k), zugehörenden Index als Vektor ausgeben lassen kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.10.2016, 00:23     Titel:
  Antworten mit Zitat      
Hallo,

Code:
[min_value(k), idx(k)] = ...


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2016, 12:34     Titel:
  Antworten mit Zitat      
Vielen Dank!! Smile
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.