|
|
Matix mit mehreren y-Werten zu einen x-Wert, suche y_max(x) |
|
Hans Maulwurf |

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 03.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.06.2010, 15:00
Titel: Matix mit mehreren y-Werten zu einen x-Wert, suche y_max(x)
|
 |
Hallo,
ich habe eine Matrix die so ähnlich aussieht:
x y1 y2 y3
0 0,5 0,2 0,6
0 0,4 0,3 0,5
0,1 0,7 0,8 0,1
0,1 0,1 0,7 0,2
0,12 0,3 0,4 0,1
0,2 0,7 0,1 0,7
0,3 0,5 0,2 0,6
0,3 0,2 0,5 0,8
0,35 0,2 0,5 0,8
Ich suche jetzt von jedem x-Werte die maximalen Werte für y1, y2 y,3
In meinem Beispiel wären das also
y1_max(x=0) = 0,5
y2_max(x=0) = 0,3
y3_max(x=0) = 0,6
y1_max(x=0,1) = 0,7
y2_max(x=0,1) = 0,8
y3_max(x=0,1) = 0,2
y1_max(x=0,12) = 0,3
y2_max(x=0,12) = 0,4
y3_max(x=0,12) = 0,1
.... und so weiter.
Meine Frage ist, wie kann ich dies am intelligentesten mit MATLAB lösen?
Vielen Dank.
Gruß[list=][/list]
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 21.06.2010, 15:18
Titel:
|
 |
Hallo
ich würde UNIQUE über X-Werte machen
Dann y1_max / y1_max/y3_max vorinitialisieren
dann in FOR-Schleifen Max -Werte suchen und Max-Arrays ausfüllen
|
|
|
Hans Maulwurf |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 03.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.06.2010, 12:38
Titel:
|
 |
Hallo,
danke erstmal für die schnelle Hilfe. Leider funktioniert dein Ansatz nicht so richtig. Matlab rechnet eine Ewigkeit vor sich hin so dass ich den Vorgang abbrechen musste. Liegt vielleicht an der Größe der Ausgangsmatrix (39985 x 4).
Ich habe das Programm jetzt auch mal in einer anderen Hinsicht angepasst und zwar so, dass die Ergebnisse alle wieder in eine Matrix geschrieben werden, die wie folgt aufgebaut ist (x, y1_max(x), y2_max(x) y3_max(x))
Leider bricht hier das Programm mit folgender Meldung ab.
??? Improper assignment with rectangular empty matrix.
Error in ==> proggi at 12
y_max(x_un==x_un(k)) = max(M(M(:,i)==x_un(k),i))
Wo ist mein Fehler?
Gruß
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 22.06.2010, 13:20
Titel:
|
 |
Hallo
Nee Zweite Schleife ist nicht notwendig, dass kann MAX-Funktion in einem Schritt schaffen
Dieser Code hat bei mir 2 Sekunden gedauert:
|
|
|
Hans Maulwurf |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 03.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.06.2010, 13:45
Titel:
|
 |
Hey Denny,
DANKE, der letzte Code scheint genau das zu machen, was ich gesucht habe.
Ich habe es mit einer kleinen 10x4 Matrix versucht und es hat funktioniert. Mit der großen Matrix, dauert es jedoch sehr lange. Eine Ende des Durchlaufs scheint nicht in Sicht.
Gruß
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 22.06.2010, 13:54
Titel:
|
 |
Komisch sollte nicht sein, was hast du denn für Rechner und welche Matlab Version verwendest du?
Hallo versuche mal den Code als M-File find_max.m abzuspeichern
Und dann in Profiler die Bremse suchen:
In Matlab Konsole folgendes auszuführen
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 22.06.2010, 23:50
Titel:
|
 |
mein 1,4GHz braucht unter XP und 7.1 etwa 20s...
|
|
|
Hans Maulwurf |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 03.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.06.2010, 14:05
Titel:
|
 |
Bei mir lag's daran, dass ich den Laptop im Akkubetrieb und somit reduzierter Leistung genutzt habe. Im Netzbetrieb läuft's wunderbar. Danke nochmal an Denny.
Gruß
|
|
|
|
|
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.
|
|