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

Bestimmten Wert nach Maximum finden

 

hackhuebi
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 28.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2015, 10:14     Titel: Bestimmten Wert nach Maximum finden
  Antworten mit Zitat      
Hallo Leute,

ich habe einen Vektor mit insgesamt 12 Spalten. Die erste Spalte enthält die Zeit in 0.2 Sekunden Schritten, die weiteren 10 Kanäle Messen eine Vorspannkraft und der letzte die Temperatur. Bisher habe ich mir den Vorspannkraft der einzelnen Kanäle wie folgt berechnet:
Code:
dF1=(max(A(:,2))-A(end,2))/max(A(:,2))*100;
dF2=(max(A(:,3))-A(end,3))/max(A(:,3))*100;
dF3=(max(A(:,4))-A(end,4))/max(A(:,4))*100;
dF4=(max(A(:,5))-A(end,5))/max(A(:,5))*100;
dF5=(max(A(:,6))-A(end,6))/max(A(:,6))*100;
dF6=(max(A(:,7))-A(end,7))/max(A(:,7))*100;
dF7=(max(A(:,8))-A(end,8))/max(A(:,8))*100;
dF8=(max(A(:,9))-A(end,9))/max(A(:,9))*100;
dF9=(max(A(:,10))-A(end,10))/max(A(:,10))*100;
dF10=(max(A(:,11))-A(end,11))/max(A(:,11))*100;
 


Allerdings möchte ich jetzt nicht mehr den Maximalwert für meine Berechnung nehmen, sondern beispielsweise den Wert 5 Sekunden nach dem Maximalwert. Kann mir jemand weiterhelfen wie ich an dieses Wert komme? Tausend Dank!


Gruß Julius
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 01.07.2015, 10:56     Titel:
  Antworten mit Zitat      
erstmal den maximalwert suchen. das ist einer der rückgabewerte von max. und dann da halt 5/0.2 drauf addieren. aufpassen das du nicht über den maximalindex läufst und gut ist. man kann bei max auch die dimension agben in welche richtung man das machen will ... du brauchst nicht 10 formeln dafür... außerdem speicherst du da einen namen im index.... das ist sehr sehr schlecht.
kann das grade nicht testen aber so irgendwie
Code:
dF=(max(A(:,2:10))-A(end,2:10))./max(A(:,2:10))*100;

das wäre dein jetziger code in einer zeile.
beim andern musst du dann halt über die indizes gehen wie ich gesagt habe.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
hackhuebi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 28.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2015, 11:13     Titel:
  Antworten mit Zitat      
danke dir für deine antwort!

leider bin ich ne absolute obernull was matlab anbelangt. die überlegung einfach die abtastrate dazuzuaddieren kam mir auch, allerdings stehe ich dann wieder direkt vor einem problem. über die max-funktion bekomme ich ja nur den messwert. wie komme ich jetzt aber von da auf die zeit um dann die 5 sekunden zu addieren und dann wieder zurück auf den dazugehörigen wert?

und wenn ich mir die dF-geschichte in einer zeile berechne, habe ich schon wieder probleme mit der ausgabe. die habe ich dazu ja genauso zeilenweise geschrieben. es tut mir leid, dass ich mich so glatt anstelle Very Happy

Code:
fprintf('\nDer Vorspannkraftverlust von Ch1 beträgt: %4.2f Prozent, Fmax beträgt: %4.2f kN', dF1, max(A(:,2)));
fprintf('\nDer Vorspannkraftverlust von Ch2 beträgt: %4.2f Prozent, Fmax beträgt: %4.2f kN', dF2, max(A(:,3)));
fprintf('\nDer Vorspannkraftverlust von Ch3 beträgt: %4.2f Prozent, Fmax beträgt: %4.2f kN', dF3, max(A(:,4)));
fprintf('\nDer Vorspannkraftverlust von Ch4 beträgt: %4.2f Prozent, Fmax beträgt: %4.2f kN', dF4, max(A(:,5)));
....
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 01.07.2015, 11:53     Titel:
  Antworten mit Zitat      
Zitat:
über die max-funktion bekomme ich ja nur den messwert.

wieso? die dokumentation von matlab ist sehr gut und sollte gelesen werden, max hat zwei rückgabewerte.
und deine ausgabe kannst du doch dynamisch machen und ne schleife über den index von dF laufen lassen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
hackhuebi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 28.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2015, 11:56     Titel:
  Antworten mit Zitat      
jo danke dir, bin gerade auf dem richtigen weg Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.07.2015, 14:21     Titel:
  Antworten mit Zitat      
Hallo hackhuebi,

Winkow hat etwas wichtiges erklärt: Einen Index im Namen einer Variablen zu verstecken, vermischt Daten und Programm.
Wenn dF ein Vektor ist, klappt das so:

Code:
for k = 1:length(dF)
  fprintf('\nDer Vorspannkraftverlust von Ch%d beträgt: %4.2f Prozent, Fmax beträgt: %4.2f kN', ...
          k, dF(k), max(A(:,k+1)));
end

Erkennst Du den Charme? Der Programmierer muss nun gar nicht mehr wissen, wie viele Elemente dF hat, denn die Schleife kümmert sich automatisch darum. Das würde auch für 1 Milliarde Elemente genau gleich laufen, während das manuelle dF1, dF2- Gefrickel den Programmierer längst in den Wahnsinn getrieben hätte.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hackhuebi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 28.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2015, 14:24     Titel:
  Antworten mit Zitat      
Hatte das Problem jetzt erst mal ohne Schleife gelöst. Aber diese hat natürlich wirklich Charme, werde ich die Tage direkt mal verwirklichen. Schön wenn alles klappt, aber der Weg dahin lässt mich jedes mal verzweifeln. Auch wenn es am Ende immer ziemlich einfach war =) Danke euch!
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.