|
|
Shuffle zusammengehörige Werte eines Vektors |
|
Hyper |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.09.2019, 11:39
Titel: Shuffle zusammengehörige Werte eines Vektors
|
|
Hi alle miteinander,
ich habe folgende Matrix: m=[0 0 2 2 1 1 0 2 1];
Nun möchte ich die ersten drei Blöcke (also 0 0, 1 1, 2 2) jeweils zusammengehörig shuffeln, sodass z.B. [1 1 2 2 0 0, 1 2 0] uns das ganze am besten 50 Mal hintereinander hängen.
Die Shuffle-Funktion ist hierbei bis jetzt nicht sehr hinflreich, da sich nicht jeweils zusammengehörige Werte shuffeln lassen.
Jemand eine Idee, wie das trotzdem ginge?
DANKE und LG
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.09.2019, 14:04
Titel:
|
|
Hallo,
du kannst ein Cell Array daraus machen, das Cell Array shufflen (ich würde randperm verwenden), und das dann zurückwandeln.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Hyper |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.09.2019, 15:56
Titel:
|
|
Hi Harald,
das shuffeln funktioniert so nicht, da ich keine Blöcke shuffeln kann, oder?
Ich dachte eher an eine for Schleife, z.B.
Liebe Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.09.2019, 16:02
Titel:
|
|
Hallo,
die Frage ist nur, wie du das ominöse Shufflen machst. Wenn du es mit randperm machst, kein Problem:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Hyper |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.09.2019, 17:48
Titel:
|
|
Hi Harald,
danke für deinen Ansatz, das sieht gut aus!
Leider geht es nicht auf, wenn ich den Code ausführe, da durch cell2mat leider die Reihenfolge durcheinander gebracht wird. Dies würde bei mind. 20 Wiederholungen ein Problem darstellen.
Danke und Grüße
|
|
|
Hyper |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.09.2019, 18:00
Titel:
|
|
Hyper hat Folgendes geschrieben: |
Hi Harald,
danke für deinen Ansatz, das sieht gut aus!
Leider geht es nicht auf, wenn ich den Code ausführe, da durch cell2mat leider die Reihenfolge durcheinander gebracht wird. Dies würde bei mind. 20 Wiederholungen ein Problem darstellen.
Danke und Grüße |
Sorry, ich korriegiere mich: Das Ranperm unterbricht die fest reinfolge, dass immer erst die doppelten Werte und als letzte drei die einzelnen in entsprechender Reihenfolge kommen sollen.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.09.2019, 18:10
Titel:
|
|
Hallo,
dann mit [1 2 0] arbeiten,
randperm
anwenden, und das Ergebnis vorweg verdoppeln mit
repelem
.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Hyper |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.09.2019, 09:33
Titel:
|
|
Hi Harald,
das Problem ist damit leider nicht gelöst. Es funktioniert nicht, das die Blöcke als auch duie Reihenfolge erhalten bleiben.
Ich glaube, man kommt um eine for-Schleife nicht herum.
Randperm scheint nicht der richtige Befehl zu sein, da es keine Rücksicht auf interner Reihenfolgen nimmt.
Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.09.2019, 09:37
Titel:
|
|
Hallo,
es ist eine Lösung des Problems so, wie ich es verstanden habe.
Du möchtest einerseits etwas zufällig vertauschen, andererseits soll eine Reihenfolge erhalten bleiben. Was soll nun zufällig sein und was nicht?
Hast du es denn mit einer for-Schleife versucht? Was genau hast du versucht, und welche Probleme sind dabei aufgetreten?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Hyper |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.09.2019, 09:49
Titel:
|
|
Hi Harald,
tut mir Leid, dass ich mich so undeutlich ausgedrückt habe; ich versuch es nochmal:
Ich gehe von folgendem Vektor aus: v = [ 0 0 1 1 2 2 0 1 2]
Dieser Vektor soll nun 20 Mal wiederholt und aneinander gepackt werden.
Bei jeder Wiederholung soll die Reihenfolge der "gedoppelten" Zahlen random sein (aber jede Reihenfolge gleich oft vorkommen). Die letzten drei Zahlen haben sich dieser Reihenfolge anzupassen. Also wären z.B. die nächsten, möglichen Wiederholungen: [1 1 0 0 2 2 1 0 2 2 2 1 1 0 0 2 1 0] und so weiter.
Ich bin bisher nicht weiter gekommen, als das:
mod=zeros(20,1);
k=1;
for i= 1:20
mod(i)=repmat(m,20,1)) ??
k=k+1;
end
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.09.2019, 10:42
Titel:
|
|
Hallo,
wenn ich das nun richtig verstanden habe:
Ich habe die Folgen der Übersichtlichkeit halber untereinander geschrieben, aber du kannst sie natürlich auch nebeneinander schreiben.
Wenn das immer noch nicht das gewünschte ist, bitte präzise beschreiben, was nicht passt.
Ich verstehe z.B. nicht, was "(aber jede Reihenfolge gleich oft vorkommen)" heißen soll. Bei zufälliger Auswahl ist es ja nun gerade so, dass nicht unbedingt jede Reihenfolge gleich oft vorkommt. Und in deinem Fall hast du 20 Iterationen und 6 mögliche Reihenfolgen. Es ist also überhaupt nicht möglich, dass jede mögliche Reihenfolge gleich oft vorkommt.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Hyper |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.09.2019, 11:03
Titel:
|
|
Hi Harald,
das sieht perfekt aus (es fehlt nur noch, dass es ein 20x1 Vektor ist, aber das sollte ich hinkriegen).
Danke für deine Geduld!
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.09.2019, 12:08
Titel:
|
|
Hallo,
wirklich ein 20x1 Vektor (das wären doch dann nur 2 Kombinationen und der Anfang einer dritten??) oder eher ein Cell mit 20 solcher Kombinationen?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
|
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 - 2024
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.
|
|