|
|
Maximal Werte aus Tabelle unter Beachtung einer 2. Spalte |
|
student_123 |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 14.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 12:20
Titel: Maximal Werte aus Tabelle unter Beachtung einer 2. Spalte
|
|
Hallo zusammen,
ich habe eine Tabelle, aus der ich maximale Werte aus der Spalte 2 in Abhängigkeit von Spalte 1 erhalten möchte. Bezogen auf das folgende Beispiel möchte ich das Maxmium des Wertes 9, 10, 11 usw erhalten.
9 18
9 20
9 12
10 16
10 25
11 13
11 26
… …
Bisher habe ich folgendes versucht:
als Fehlermeldung erhalte ich folgendes:
Zitat: |
Undefined operator '==' for input arguments of type 'table'.
Error in Gewicht_max (line 16)
if a(i,1) == n
|
Wie kann ich vorgehen, damit jedem Wert n der maximale wert p zugeordnet wird, die Wertepaare möchte ich anschließend wieder in einer Tabelle speichern.
Viele Grüße
Student_123
|
|
|
|
|
student_123 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 14.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 12:37
Titel:
|
|
Was ich noch ergänzen wollte:
Ich habe bereits das ganze mit nur '=' probiert, allerdings kommt dann die nächste Fehlermeldung, dass das nicht ginge.
Darum ist meine Frage an der Stelle eher, wie ich meine if-Bedingung anders formulieren kann, wenn ich table habe.
Viele Grüße
Student_123
|
|
|
warawa |
Forum-Fortgeschrittener
|
|
Beiträge: 82
|
|
|
|
Anmeldedatum: 15.03.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 12:47
Titel:
|
|
Ich bin selber kein Matlab Profi und mir ist nicht ganz klar was du genau mit dem Code bewirken willst.
Aber wenn du immer die 1. Spalte 9-60 durchgehen willst und testen willst ob in der zelle eine 9 steht solltest du die for schleifen tauschen.
Die Initialisierung von i und n vor der 1. for schleife ist unnötig.
Zudem wenn du Wissen willst was das maximum von den 9er ist solltest du nicht max(a(:,2)) machen , da du sonst von den anderen werten (10-60) das maxima raussuchst. Ich würde immer einen test machen ob die zahl größer ist.
Also der Code schaut meiner Meinung nach so besser aus:
Ich hoffe ich konnte irgendwie helfen
|
|
|
student_123 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 14.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 13:12
Titel:
|
|
Hallo warawa,
vielen Dank für deine schnelle Rückmeldung. ich bin noch matlab-neuling und freu mich über jeden Tipp.
n steht für einen Tag, somit möchte ich jedem Tag einen maximalen Wert zuordnen und anschließend eine kleine Tabelle haben, in der dann steht (bezogen auf obiges Besipiel):
9 20
10 25
11 26
Was ich leider nicht ganz verstehe, wieso du erst sagst, max = 0? an der Stelle müsste dann der 1.Eintrag aus Zeile 1 stehen, mit dem verglichen werden soll?
viele Grüße
Student_123
|
|
|
warawa |
Forum-Fortgeschrittener
|
|
Beiträge: 82
|
|
|
|
Anmeldedatum: 15.03.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 13:27
Titel:
|
|
Du hast recht da ist ein kleiner Fehler drinnen ich hab das nur schnell geschrieben da passiert sowas leicht mal entschuldigung
und wenn du jetzt das maximum von 9 ausgeben willst, musst du einen Code an der stelle von txmax = t(p) schreiben (denn dort ist im 1.Durchlauf max == maximum von 9).
Zu deiner Frage ich initialisierte m = 0 weil ich vermute, dass die Werte in Spalte 2 nicht negativ werden können, und somit ist 0 das kleinst mögliche.
Dann vergleiche ich max mit dem 1.Wert (also a(1,2) und teste ob der wert > 0 ist, dann kommt der 2.Wert ( a(2,2)) und wirt getestet ob der wert > mas ist und so weiter
|
|
|
student_123 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 14.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 13:58
Titel:
|
|
Vielen Dank, ich habe deinen Vorschlag angenommen und soweit umgeschrieben, dass es an sich funktioniert.
mein Problem ist jetzt noch, dass mir in der Tabelle nur das größte n=60 und in Spalte 2 der Maximalwert angeben wird. Hast du noch einen Tipp, wie ich n=9, n=10, n=11, … mit jeweiligen Maximalwert eintragen kann?
Viele Grüße
Student_123
|
|
|
warawa |
Forum-Fortgeschrittener
|
|
Beiträge: 82
|
|
|
|
Anmeldedatum: 15.03.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 14:16
Titel:
|
|
Dein Fehler ist hier
tabelle(:,1) = n;
tabelle(:,2) = max;
du überschreibst die tabelle immer wieder mit einem höheren Wert.
wenn du dir mal einen Haltepunkt setzt und Schritt für Schritt deine tabelle anschaust fällt dir auf das da immer die richtigen n und maximas von 9 10 11 ... reingeschrieben werden aber mit jedem höheren n wieder neu überschrieben werden
Ich muss gleich wohin, deshalb kann ich nicht genau sagen wie man es richtig macht, aber wenn ich Zeit hab versuche ich mich zu melden
PS: schau mal meinen neuen code an ich hab max = 0 unter die 1. Schleife neu gelegt, da es sein könnte das das maximum an tag 10 kleiner ist als an tag 9 und du sonst für tag 10 das maximum von tag 9 setzt.
Deshalb wird das max nach jedem Tag wieder auf 0 gesetzt
|
|
|
student_123 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 14.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2019, 14:56
Titel:
|
|
Hi,
perfekt! Danke für den Tipp mit max = 0 an der richtigen Stelle. Mein Tabellenproblem habe ich, wie folgt, gelöst:
tabelle(n,1) = n(:,1);
tabelle(n,2) = max(:,1);
Viele Grüße
Student_123
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|