Verfasst am: 01.07.2015, 10:14
Titel: Bestimmten Wert nach Maximum finden
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:
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!
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
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
ü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.
_________________
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.
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!
Einstellungen und Berechtigungen
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
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.