|
|
Dynamische Matrizen - Zuweisen und Finden |
|
KaiS |

Forum-Century
|
 |
Beiträge: 102
|
 |
|
 |
Anmeldedatum: 19.04.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.03.2013, 14:30
Titel: Dynamische Matrizen - Zuweisen und Finden
|
 |
Hallo zusammen,
ich habe folgende Situation:
Ich habe drei Matrizen:
Diese werden nun über
zu einer Gesamtmatrix zusammengefügt, wobei nicht die Originaleinträge übernommen werden, sondern einfach basierend auf der Spaltenanzahl der drei Matrizen in der Gesamtmatrix von 1 bis zur Höchstanzahl an Spalten hochgezählt wird.
Nun folgendes Problem:
Aus einem beliebigen Grund möchte ich nun wissen, an welcher Stelle die Matrix B innerhalb der Gesamtmatrix steht. Die Lösung wäre 3, weil ja A mit zwei Spalten die Einträge "1" und "2" der Gesamtmatrix abdeckt und danach B direkt kommt.
Aber wie kann ich diesen Wert automatisch per Code herausfinden? Gerade auch wenn es z.B. kompliziertere Fälle mit mehr und spaltenreicheren Matrizen gibt.
Danke!
LG
Kai
|
|
|
|
|
Seban |

Forum-Meister
|
 |
Beiträge: 600
|
 |
|
 |
Anmeldedatum: 19.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ab R2014b
|
 |
|
|
 |
|
Verfasst am: 07.03.2013, 17:54
Titel:
|
 |
Hi,
Deine Gesamtmatrix ist (in meinem Verständnis) keine Gesamtmatrix. Das ist einfach ein Vektor der von 1 bis 5 läuft, weil die 3 Vektoren eben gemeinsam 5 Elemente haben. Nennen wir das besser Indexvektor oder so.
Die Gesamtmatrix ist eher
So könnte man jetzt nach B in ges suchen, allerdings erhält man so keine eindeutige Lösung, wenn die 2 (=B) öfters in ges vorkommt
Mit
hat man evtl mehr Glück, weil ein mehrfaches Vorkommen von zwei aufeinander folgenden Zahlen unwahrscheinlicher sein mag. Eindeutig ist das aber auch nicht.
Du müsstest dir also (denke ich als, sagen wir, fortgeschrittener Anfänger) beim Erstellen von ges die Reihenfolge der Vektoren merken und somit wissen, dass B den Index 3 hat.
Grüße
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.03.2013, 18:28
Titel: Re: Dynamische Matrizen - Zuweisen und Finden
|
 |
Hallo Kai,
Das ist nicht möglich. Der Vektor "input_indices" enthält keine relevante Information mehr. Du benötigst also einen anderen Ansatz. Es ist noch nicht klar, wie das Ergebnis aussehen soll, wenn das gesuchte Array mehr als ein Element enthält. Was wäre in Deinem Beispiel denn die Antort, wenn Du nach C suchst?
Es ist immer ungünstig, eine Menge von Daten in verschiedenen Variablen zu speichern, wenn sie inhaltlich zusammen gehören und sich die Anzahl der Variablen dynamisch ändert. Dann ist ein Cell-Array prktischer:
Jetzt steht B, also Data{2} an der Stelle index(2) im Vektor input_indices.
Gruß, Jan
|
|
|
KaiS |
Themenstarter

Forum-Century
|
 |
Beiträge: 102
|
 |
|
 |
Anmeldedatum: 19.04.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.03.2013, 21:09
Titel:
|
 |
Hi ihr beiden,
danke schon mal für eure Antworten!
Zitat: |
Was wäre in Deinem Beispiel denn die Antwort, wenn Du nach C suchst? |
Dann würde ich gerne einen Vektor [4 5] bekommen. Bei A wäre es ein Vektor [1 2].
Cell-Array klingt gut! D.h. ich hätte dann folgende Idee:
Das Cell-Array würde bei meinem Bsp. wie folgt aussehen sollen:
So könnte ich dann auch mir den passenden Vektor einfach rausziehen, indem ich davor herausfinde, welcher Index mit welcher Variable (hier die Buchstaben A,B,C) verbunden ist.
Wie könnte ich aber nun cell_array programmieren, sodass mir Matlab das o.g. Ergebnis ausgibt? Es soll ja dynamisch sein (also for-Schleife?) für den Fall, dass z.B. noch ein Vektor D und E dazukommen sollte oder doch nur zwei Vektoren A und B vorhanden sind.
Danke!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 08.03.2013, 10:13
Titel:
|
 |
Hallo Kai,
Mir ist noch nicht klar, wie die Verbindunbg zwischen Buchstaben (also Namen der Variablen) und den Daten dynamisch erfolgen soll. Bei 5 Variablen von A bis E ist das ja noch überschaubar, aber wenn man 1000 Variablen hat, ist das Basteln mit den Namen der Variablen nicht sinnvoll machbar.
Wie wäre dies:
Das klappt ohne Verrenkungen auch für 10 Millionen Variablen. Man sollte also unbedingt davon absehen, in diesem Fall wirklich 10 Millionen verschiedene Variablen zu erzeugen.
Gruß, Jan
Man sollte also unbedingt
|
|
|
KaiS |
Themenstarter

Forum-Century
|
 |
Beiträge: 102
|
 |
|
 |
Anmeldedatum: 19.04.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.03.2013, 10:24
Titel:
|
 |
Alles klar, vielen Dank! Ich muss mir nochmal Gedanken machen, wieso der Code funktioniert, aber das war auf jeden Fall sehr hilfreich!
|
|
|
|
|
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.
|
|