D.h. in diesem vereinfachem Beispiel würde ich gerne die gleichen Werte in einer Matrix abspeichern, sodass die neu kreirte Matrix dann in etwa so aussieht:
1 2
1 3 3
2 3 3
3 4 4 ....
In der ersten Spalte sollen die Werte der Matrix1 und in der zweiten die Werte der Matrix2 abgespeichert werden.
Das Beispiel macht vllt nicht so viel Sinn, aber in meinem komplexeren Beispiel vergleiche ich Matrizen mit mehreren Spalten. Und mit dem hier dargestellten Beispiel kann ich die Ergebnisse vorsortieren.
generell würde ich zur Verwendung von
intersect
raten.
Zitat:
sodass die neu kreirte Matrix dann in etwa so aussieht:
1 2
1 3 3
2 3 3
3 4 4 ....
Das ist ja gar keine Matrix, weil in der ersten Zeile weniger Einträge als in den anderen stehen.
Mir ist auch nicht klar, was die Bedeutung der einzelnen Spalten sein soll. In der ersten Spalten könnte z.B. der Wert stehen, aber warum ist das doppelt? In der zweiten Spalte könnte die Stelle stehen, an der der Wert im ersten Vektor das erste Mal vorkommt oder auch die Anzahl, wie oft er vorkommt.
Zitat:
Das Beispiel macht vllt nicht so viel Sinn, aber in meinem komplexeren Beispiel vergleiche ich Matrizen mit mehreren Spalten.
Dann wäre es hilfreich, als Beispiel auch zwei Matrizen mit beispielsweise 2-3 Spalten und 3-4 Zeilen zu verwenden und das passende Ergebnis. Wenn die Matrizen aus Zufallszahlen erzeugt werden, bitte den Seed angeben, weil sonst ja jeder andere Zufallszahlen bekommen kann, was die Nachvollziehbarkeit erschwert, z.B.
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 ;)
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.08.2021, 16:26
Titel:
Hallo Harald,
vielen Dank für deine Antwort.
Die 1 und 2 sollten eigentlich über die Spalten 1 und 2 stehen, zur Vedeutlichung der Tabelle. Ist wohl leider verrutscht.
Mir ist wichtig, dass alle Paare aufgeführt werden und nicht nur die Anzahl der Paare gezählt werden. Aber rein theoretisch würde es reichen wenn nur ein Wert ausgegeben wird und nicht beide.
Ich habe das Beispiel nun um eine größere Matrix ergänzt und rng eingefügt.
for i=1:1:length(Matrix1) for p=1:1:8
matrix1i=(find(Matrix1)==p);
matrix2i=(find(Matrix2)==p);
% if [matrix1i] == [matrix2i] % M(i,1)=matrix1i; % M(i,2)=matrix2i; % end end end
Ich habe auch den intersect Befehl ausprobiert, allerdings bekomme ich dann immer nur einmal den Wert zweier gleicher Werte zurückgegeben.
Viele Grüße
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.08.2021, 16:28
Titel:
Hallo ich nochmal,
ich würde dann gerne in der Matrix M in der ersten Spalte die identischen Werte und in den anderen spalten die zugehörigen Werte der Matrix1 und Matrix2 abspeichern. Und das für alle Paare.
schreib doch bitte konkret, was das Ergebnis für das Beispiel sein soll.
Zitat:
in der Matrix M in der ersten Spalte die identischen Werte
Die identischen Werte in der ersten Spalte, oder was soll verglichen werden?
Zitat:
und in den anderen spalten die zugehörigen Werte der Matrix1 und Matrix2 abspeichern
Was heißt "zugehörig"? Die Werte der anderen Spalten?
Was ist, wenn ein Wert in der ersten Spalte mehrfach vorkommt?
Zitat:
Ich habe auch den intersect Befehl ausprobiert, allerdings bekomme ich dann immer nur einmal den Wert zweier gleicher Werte zurückgegeben.
intersect liefert ja optional mehrere Rückgabeargumente.
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 ;)
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.08.2021, 16:51
Titel:
Hallo Harald,
entschuldige meine nicht eindeutige Schreibweise.
Ich möchte die ersten beiden Spalten der Matrix1 und Matrix2 auf identische Werte vergleichen. Sodass ich am Ende folgendes Ergebnis in der Matrix Ma abgespeichert habe:
In der ersten Spalte befindet sich der "identische Wert"
In der zweiten Spalte befindet sich der Wert der Saplte 2 der Matrix1 zu dem identischen Wertepaar
In der dritten Spalte analog
In der vierten Saplte befindet sich dann der Wert der Spalte 2 der Matrix2 zu dem identischen Wertepaar.
Bei meinem Beispeil befindet sich in der ersten Zeile in der ersten Spalte sowohl bei der Matrix1 als auch bei der Matrix2 eine 3. Die Zeile der Tabelle M würde dann so aussehen:
3 6 8 4 8
Und dass dann für alle identishen Werte, auch doppelte, da die Werte der 2 und 3 Spalte stets unterschiedlich sind.
Ich hoffe ich konnte mein Problem besser veranschualichen.
Ich hoffe ich konnte mein Problem besser veranschualichen.
Besser, aber leider immer noch nicht eindeutig. Am klarsten ist es wie gesagt, wenn du anhand des konkreten Beispiels wirklich hinschreibst, was du haben möchtest.
Zitat:
Und dass dann für alle identishen Werte, auch doppelte, da die Werte der 2 und 3 Spalte stets unterschiedlich sind.
Was soll dann passieren, wenn ein Wert in Spalte 1 von Matrix 1 doppelt vorkommt und in Spalte 1 von Matrix 2 dreifach? In welcher Reihenfolge sollen die Zeilen zu den doppelten Einträgen aufgeführt werden?
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 ;)
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 07.08.2021, 12:51
Titel:
Hallo Harald,
du hast recht. Das macht keinen Sinn. Ich habe das von mir gewünschte Ergebnis nochmal überdacht.
Eigentlich will ich nur wissen welche Kombinationen vorhanden sind und diese abspeichern.
D.h. ich will wissen ob es zu dem Wert 0, ... der Matrix1 den gleichen Wert in der Matrix2 gibt. Und das in einer Tabelle abspeichern, aber dann nur einmal.
Die generierten Zufallsmatrizen sind dann eher nicht so gut zur Verdeutlichung meines Problems.
warum ist 2 kein Paar? Das kommt doch in beiden Vektoren vor?
Die Beschreibung klingt für mich wieder nach
intersect
, aber ich verstehe nicht, warum 2 nicht vorkommen soll. Und was ist mit 5,6,7,9?
Oder ist der entscheidende Punkt an 1 und 4, dass sie doppelt vorkommen? Allerdings die 1 nur in x2 doppelt und die 4 nur in x1?
Wenn die Fragestellung klar wäre, sollte die Lösung kein Problem sein. Leider ist mir die Fragestellung (weiterhin) nicht vollkommen klar.
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 ;)
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.08.2021, 08:02
Titel:
Hallo Harald,
die 2 ist ein Paar, übersehen, und die 5,6,7 und 9 habe ich nicht weiter angezeigt, aber
die 2, 4, 5, 6, 7 und 9 wären dann auch ein Paar.
Habe den intersect Ansatz gerade ausprobiert, sollte für mein neues gewünschtes Ergebnis auch funktionieren.
Vielen Dank für deine Antworten und deine Hilfe!
Beste Grüße
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.08.2021, 10:50
Titel:
Hallo Harald,
ich habe es wie gesagt mit deinem Ansatz ausprobiert allerdings kommt bei mir für mein neu gewünschtes Ergebnis nur kauderwelsch raus.
Wie vereinfacht sich dein Intersect Ansatz wenn ich das gewünschte Ergebnis wie in meiner Antwort von gestern um 13:51 erhalten möchte?
Ich bin in Matlab noch relativ neu...
Beste Grüße
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.08.2021, 11:08
Titel:
Hallo Harald,
die Frage hat sich erledigt.
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
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.