|
|
Die größten Stellen in einem Vektor finden! |
|
sebastian1013 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 11:59
Titel: Die größten Stellen in einem Vektor finden!
|
 |
Hallo Leute,
ich schreibe momentan an einem Programm und möchte z.b die Stellen der 4 größten Werte in einem Vektor herausfinden und in einem anderen Vektor speichern.
Die Anzahl der größten Werte ist variabel, sodass beim nächsten Programmstart es auch die Stellen 18 größten Werte sein können!
Ich danke euch schonmal für eure hilfreichen Antworten!
Beste Grüße
Sebastian
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 12:12
Titel:
|
 |
Ich würde es über Sortierung lösen:
Andreas
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 12:16
Titel:
|
 |
Bei sehr grossen Datenmengen kann sortieren zuviel Zeit kosten. Wenn etwas über die Daten bekannt ist, kann man vorfiltern. In meinem obigen Beispiel kann man sagen "die grössten Werte sind bestimmt grösser als 0.6, also filtere ich nur die mit a>0.6 heraus.
Eine andere Vorgehensweise bei grossen Datenmengen und kleinen n wäre eine Schleife. Immer das absolute Maximum suchen und dann aus dem Suchvektor entfernen. Das n mal.
Andreas
|
|
|
sebastian1013 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 12:25
Titel:
|
 |
Vielen Dank schonmal für die Antwort!
Leider war etwas unglücklich von mir formuliert...
Ich habe einen Vektor "Vektor" mit verschiedenen Werten, jetzt möchte ich die Stellen der z.B. 4 größten Werte herausfinden und in einem neuen Vektor speichern, mit dem ich weiterarbeiten kann.
Allerdings soll die 4 keine fester Wert sein, sondern beim nächsten mal vielleicht 18 betragen oder 127 oder ...
Ich kann/darf den Vektor nicht umsortieren, weil ich die Stellen benötige, z.b. habe ich den Vektor "vec" und ich benötige die größten Stellen i_1 - i_4 des Vektors und diesen möchte ich in max_vec speichern wo nur die Stellen vorhanden sind, z.b max_vec=[1 5 8 27 ], mit i_1=1, i_2=5, i_3=8, i_4=28, welche den größten Stellen meines Ausgangsvektors entsprechen.
Ich benötige die Stellen, um die Zeilen in einer Matrix auf Null zu setzen.
ich hoffe jetzt ist es etwas verständlicher!
|
|
|
sebastian101 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 12:49
Titel:
|
 |
Ich habe soeben eine Lösung herausgefunden:
vielleicht gibts ja etwas nicht so aufwendiges, aber meine Fragestellung ist damit eigentlich gelöst!
Vielen Dank trotzdem!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 17:45
Titel:
|
 |
Hallo Sebastian,
Andreas' Lösung mach fast genau das gewünschte. Das Sortieren ist dabei kein Problem, weil Du ja den Sortier-Index ebenfalls ausgebem kannst:
Also stecken die benötigten Indices direkt in der Variablen "index".
Gruß, Jan
|
|
|
sebastian101 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.02.2011, 09:54
Titel:
|
 |
Hallo, viele Dank schonmal für eure Antworten,
aber mit welchem Befehl gibt er mir die Stellen aus, wo sich
die größten Werte befinden?
Viele Grüße
|
|
|
_Peter_ |

Moderator
|
 |
Beiträge: 537
|
 |
|
 |
Anmeldedatum: 08.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.10, 2010a
|
 |
|
|
 |
|
Verfasst am: 18.02.2011, 10:19
Titel:
|
 |
Hallo sebastian101,
Jan S hat Folgendes geschrieben: |
Also stecken die benötigten Indices direkt in der Variablen "index".
|
Da hat dir Jan doch schon die Antwort auf deine Frage genannt. Guck dir mal Index an.
wenn du die Indices der größten vier Stellen willst dann so:
p.s.: Jan hat einen klitzekleinen Fehler in seinem Code. Es muss
heißen um es auf die nachfolgenden Befhele anzuwenden.
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
sebastian101 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.02.2011, 11:13
Titel:
|
 |
Ah, ok, also das Programm sortiert quasi, behält sich aber die ursprünglichen Positionen, sodass wenn man die vier größten Werte sucht, diese einfach die ersten vier sind!
Hat warscheinlich wegen dem s und n fehler nicht funktioniert!
Vielen Dank, ist alles geklärt
|
|
|
|
|
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.
|
|