|
|
Zufallszahlen der Größe nach sortieren und neu ablegen |
|
Meister_brot |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 16.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2012, 23:01
Titel: Zufallszahlen der Größe nach sortieren und neu ablegen
|
 |
|
 |
|
Guten Abend,
mein erster Post und gleich eine Frage! Tut mir leid, wenn ich euch damit auf die Nerven falle
Es geht sich um Folgendes:
erstmal vorne weg, ich habe von Matlab noch absolut KEINEN blassen Schimmer.
Zu meinem Problem:
Ich muss anhand von 2 unterschiedlichen Sortieralgorithmen 100 Zufallszahlen der Größe nach sortieren.
Als erste Variante habe ich den klassischen Bubblesort-Algorithmus gewählt, er ist zwar langsam und nicht sehr effizient, aber einfach in Matlab umzusetzen.
Die zweite Variante habe ich mir folgendermaßen vorgestellt:
Ich generiere wieder 100 Zufallszahlen mit "zahlen=rand(100,1)" und einen zweiten array "zahlen_sortiert=ones(100,1)"
Nun möchte ich die kleinste Zahl aus dem Array "zahlen" ermitteln und an die erste Stelle des Arrays "zahlen_sortiert" setzen. Danach wird die kleinste zahl des Arrays "zahlen" gelöscht.
Jetzt beginnt das Spiel wieder von vorne. Die kleinste Zahl aus "zahlen" heraussuchen, an zweite Stelle des Arrays "zahlen_sortiert" setzen und löschen, dann wieder die kleinste, an dritte Stelle setzen, löschen, usw usf.
Nun zu meinem Problem:
Ich habe absolut keinen Ansatz, wie ich dies in Matlab bewerkstelligen könnte. Um Hilfe und Anregungen wäre ich äußerst dankbar!
MfG,
Meister_brot
_________________
wer das liest kann lesen
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.500
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.01.2012, 23:11
Titel:
|
 |
Hallo,
das Umsetzen in einen Algorithmus ist auch etwas, was geübt werden muss.
Ein paar Hinweise:
Du brauchst:
- eine Schleife (for oder while)
- den Befehl min mit zwei Rückgabeargumenten
Ansonsten ist es lediglich Indizierung.
Grüße,
Harald
|
|
|
Meister_brot |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 16.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2012, 23:26
Titel:
|
 |
so sieht mein code momentan aus. Ich steh total auf dem Schlauch! Ich WEIß, dass da ein Logikfehler ist, ich finde ihn aber nicht
Ich verzweifel, hab schon ganz graue Haare dadurch!
_________________
wer das liest kann lesen
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.500
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.01.2012, 00:11
Titel:
|
 |
Hallo,
ja, das klappt erstmal nicht Du brauchst eben den Index der kleinsten Zahl, und schon funktioniert es:
Der schnellste Weg zum Sortieren ist natürlich der MATLAB-Befehl SORT, aber ich denke mal, hier ging es um die Programmierübung.
Grüße,
Harald
|
|
|
soad |

Forum-Century
|
 |
Beiträge: 150
|
 |
|
 |
Anmeldedatum: 10.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.01.2012, 00:13
Titel:
|
 |
"kleinste" ist in diesen Fall kein gültiger Index. Möglich wäre z.B:
jedoch nur, wenn in dem Vektor unterschiedliche Werte stehen. Daher empfiehlt sich wie bereits von Harald erwähnt der Befehl MIN mit zwei(!) Rückgabeargumenten.
EDIT: zu langsam....
|
|
|
Meister_brot |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 16.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.01.2012, 00:31
Titel:
|
 |
versteh ich das nun richtig, dass bei
das "index" die Stelle der Zahl ist?
Wenn beispielsweise die kleinste Zahl 0.023 beim ersten Durchlauf an 5. Stelle wäre, dann wäre [kleinste, index] = (0.023, 5) ?
Und dieser Teil
in Kombination mit diesem Teil
dient als Überprüfung, ob die durch sort durchgeführte Sortierung mit meiner Eigenen übereinstimmt, richtig?
Hey, wenn das alles so stimmt, wie ich mir das eben denke, dann ist das ja garnicht soooo kompliziert, wie ich dachte... Ich wusste nicht, dass es diesen Index der Zahl überhaupt gibt.
Vielen vielen Dank für die schnelle Hilfe! Sollte ich in Zukunft wiedermal auf für mich unlösbare Probleme stoßen, dann weiß ich ja, wo ich Hilfe bekomme
ps: Ja, die Sache dient als Programmierübung. Ich habe schon überlegt den sort-befehl irgendwo versteckt einzubauen und dann nur 100x wirre Sachen machen zu lassen, da ich echt nicht weiter gekommen bin
MfG,
Meister_brot
_________________
wer das liest kann lesen
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.500
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.01.2012, 10:09
Titel:
|
 |
Hallo,
du hast alles richtig verstanden.
Was den MIN-Befehl (und andere MATLAB-Befehle) angeht, ist es immer hilfreich, die Dokumentation zu lesen. Dort wird nämlich das Verhalten des Befehls, auch bei verschiedenen Aufrufvarianten, detailliert beschrieben, z.B.
Grüße,
Harald
|
|
|
|
|
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.
|
|