|
Tolpatsch |

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 18.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2009, 17:31
Titel: grösste Werte
|
 |
Hallo zusammen
ein kleines Problem: wie kann ich die 10 grössten Werte aus einem 1*500 zeilenvektor herausfinden?
Danke für die Hilfe!
|
|
|
|
|
steve |

Ehrenmitglied
|
 |
Beiträge: 2.029
|
 |
|
 |
Anmeldedatum: 03.09.07
|
 |
|
 |
Wohnort: Wien
|
 |
|
 |
Version: R2024a
|
 |
|
|
 |
|
Verfasst am: 27.05.2009, 18:11
Titel:
|
 |
Moin,
eine schnelle Lösung:
Das funktioniert aber nur so lange keine doppelten Werte auftauchen.
Gruß
Alex
/edit: Danke an denny für den Hinweis auf meinen Fehler
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Zuletzt bearbeitet von steve am 27.05.2009, 19:35, insgesamt einmal bearbeitet
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 27.05.2009, 18:42
Titel:
|
 |
@Steve
kleiner Fehler eingeschlichen
|
|
|
Tolpatsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 18.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2009, 18:44
Titel:
|
 |
Vielen Dank für die Hilfe!!!
|
|
|
Tolpatsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 18.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2009, 18:56
Titel:
|
 |
Gibts eine Möglichkeit herauszufinden an welcher Stelle die grössten Werte liegen?
|
|
|
steve |

Ehrenmitglied
|
 |
Beiträge: 2.029
|
 |
|
 |
Anmeldedatum: 03.09.07
|
 |
|
 |
Wohnort: Wien
|
 |
|
 |
Version: R2024a
|
 |
|
|
 |
|
Verfasst am: 27.05.2009, 19:35
Titel:
|
 |
@ Tolpatsch: Ja, über den Aufruf von MAX wie bei denny:
@denny: Eigentlich sollte es so heißen:
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
Tolpatsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 18.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2009, 19:40
Titel:
|
 |
|
|
Tolpatsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 18.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.06.2009, 11:38
Titel:
|
 |
Ich habe versucht die ganze Geschichte auf eine Matrix auszuweiten, d.h. ich suche die 5 grössten Werte jeder Zeile einer 10*500 Matrix.
Leider bekomme ich immer wieder die gleiche Fehlermeldung (Index exceeds matrix dimensions). Kann mir jemand weiterhelfen?
|
|
|
steve |

Ehrenmitglied
|
 |
Beiträge: 2.029
|
 |
|
 |
Anmeldedatum: 03.09.07
|
 |
|
 |
Wohnort: Wien
|
 |
|
 |
Version: R2024a
|
 |
|
|
 |
|
Verfasst am: 02.06.2009, 15:13
Titel:
|
 |
Moin,
dann schau dir nochmal die Hilfe zu der MAX-Funktion an. Du kannst nämlich die Dimension übergeben, in welcher das Maximum gesucht werden soll.
Gruß
Alex
PS: Die Lösung benötigt nur eine Schleife
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
Tolpatsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 18.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.06.2009, 16:35
Titel:
|
 |
Hej irgendwie gelingt es mir nicht die Elemente in maxvalues haruaszukicken, damit ich keine doppelten einträge habe. Ich habe es wie folgt versucht:
Leider weiss ich nicht wie ich das Problem mit pos lösen soll. Versucht habe ich folgende Varianten:
wobei keine num Erfolg führte...
|
|
|
steve |

Ehrenmitglied
|
 |
Beiträge: 2.029
|
 |
|
 |
Anmeldedatum: 03.09.07
|
 |
|
 |
Wohnort: Wien
|
 |
|
 |
Version: R2024a
|
 |
|
|
 |
|
Verfasst am: 02.06.2009, 16:55
Titel:
|
 |
|
|
Tolpatsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 18.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 08:18
Titel:
|
 |
Danke Alex!! Du scheinst dich ziemlich auszukennen mit Matlab, kennst du gute Literatur (evtl. in Verbindung zu Finance Applikationen) zu Matlab?
Gruss und Dank!!
|
|
|
steve |

Ehrenmitglied
|
 |
Beiträge: 2.029
|
 |
|
 |
Anmeldedatum: 03.09.07
|
 |
|
 |
Wohnort: Wien
|
 |
|
 |
Version: R2024a
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 08:56
Titel:
|
 |
Leider nein.
Was ich empfehlen kann:
1. Matlab Hilfe ausgiebig nutzen.
2. mitgelieferte Demos anschauen, bzw. durcharbeiten
3. Mathworks Webinare ansehen (da gibts auch jede Menge zu Finace Applications)
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
Alpha23 |

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 11.09.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 13:10
Titel:
|
 |
|
 |
|
Bei den vielen Schleifen wird einem ja schlecht!
Generell sollte man Schleifen in MATLAB vermeiden wo's nur geht! Die lassen nämlich nicht nur die Laufzeit explodieren, sondern machen den Quelltext sehr schnell unübersichtlich! Außerdem: Variablen vermeiden, wo's geht, damit der Speicher nicht überfüllt wird. Das hat nichts mit Schönheit zu tun, sondern mit (An-)Gewöhnungssache. Ich hab' früher auch laufend Schleifen verwendet und gar nicht gemerkt, wie langsam Alles läuft. Als ich dann angefangen hab', Schleifen zu sparen, gab's Laufzeitverbesserungen von teilweise mehreren Hundert Prozent!
Hier ein Vorschlag für die k größten Werte eines Vektors v OHNE SCHLEIFEN und mit nur einer Zwischenvariable (vorher k festlegen):
Die Funktion
gibt die unterschiedlichen Werte eines Vektors oder einer Matrix aus, lies mal in der Hilfe nach, das kann noch mehr. Bitte keine Schleife aus nem einfachen Befehl machen!
Für die Indizes und Werte aus v, die dem Kriterium entsprechen, kannst du z.B. noch ein
dahinterhängen. Die erste Spalte enthält die Indizes aus v, unter denen ein Eintrag steht, der zu den k größten Werten gehört, die zweite Spalte dann die Werte selbst. Für Matrizen geht das ähnlich, aber da brauchst du zwei Zwischenvariablen mehr. Aber auch hier: KEINE SCHLEIFE benötigt!
Viel Erfolg bei der weiteren Programmierung!
Zuletzt bearbeitet von Alpha23 am 03.06.2009, 18:12, insgesamt einmal bearbeitet
|
|
|
Alpha23 |

Forum-Anfänger
|
 |
Beiträge: 35
|
 |
|
 |
Anmeldedatum: 11.09.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.06.2009, 17:08
Titel:
|
 |
Danke an derOli erstmal!!!
Habe mich belehren lassen, dass das mit den Schleifen so nicht stimmt. Wichtiger ist, dass MATLAB möglichst kleine Variablen zum Bearbeiten bekommt. Also häppchenweise. Das gilt auch für die (logischen) Anweisungen, die innerhalb von Vektoren stehen (meinetwegen: zeige mir alle Werte des Vektors, die größer sind als 30).
Eine for-Schleife kann durchaus lohnen, wenn bei sehr große Datenmengen an nur wenigen Stellen geändert werden müssen. Durch die Vektorisierung muss MATLAB die gesamte Variable laden, bei der for-Schleife nur kleine Teile. Außerdem kann man mit einer if-Prüfung verhindern, dass während der Schleife irrelevante Teile der Daten überhaupt prozessiert werden.
Hoffe mal, dass das so stimmt...
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|