|
|
Dictionary mit Tuple als Key |
|
Johannson |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 02.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.01.2016, 14:51
Titel: Dictionary mit Tuple als Key
|
 |
Hallo zusammen,
ich würde gerne in meinem Matlabcode ein Dictionary mit einem Tuple als Code deklarieren.
Im Moment benutze ich "containers.Map".
Allerdings schaffe ich es nicht den Key als "Tuple" bzw. als Vektor zu deklarieren.
Hintergrund ist, dass ich für ein zweidimensionales Gitter, Werte für jeden Punkt abspeichern möchte.
Hier mein Code:
Fehlermeldung: "Unsupported key specified. See documentation for valid key types."
Vielen Dank im Vorraus für die Hilfe.
Grüße Johannes
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.01.2016, 15:05
Titel: Re: Dictionary mit Tuple als Key
|
 |
Hallo Johannson,
Die Fehlermeldung bedeutet, dass ein Cell-Vektor, der Double-Vektoren enthält, kein valider Key ist.
Dein Beipiel sieht so aus, als wäre dies bereits eine hinreichend präzise Darstellung:
Wenn Du dann auf den Wert bei [0,2] zugreifen möchtest:
Das ist zwar ein paar Leven einfacher als der Ansatz mit den container.Maps, aber vielleicht ist es ausreichend um das eigentliche Problem zu lösen?
Gruß, Jan
|
|
|
Johannson |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 02.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.01.2016, 16:10
Titel:
|
 |
Hallo,
erst einmal vielen Dank für die Antwort.
Deine Lösung gibt mir allerdings ein Array zurück in dem dann die erste Zahl und die zweite Zahl drinsteht.
Außerdem wird das Array noch deutlich größer sodass dann sehr viele Zahlen in dem Array stehen.
Gibt es die Möglichkeit den Wert einzeln abzufragen?
Vielen Dank.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.01.2016, 19:46
Titel:
|
 |
|
 |
|
Hallo Johannson,
Zitat: |
Deine Lösung gibt mir allerdings ein Array zurück in dem dann die erste Zahl und die zweite Zahl drinsteht. |
Das verstehe ich nicht. In dem Array stehen alle 4 Zahlen drin und statt eines "valueKey" wird der Index verwendet.
Zitat: |
Außerdem wird das Array noch deutlich größer sodass dann sehr viele Zahlen in dem Array stehen. |
Das haben Arrays so an sich. Es spricht nichts dagegen große Arrays zu erzeugen.
Zitat: |
Gibt es die Möglichkeit den Wert einzeln abzufragen? |
Ja, nämlich genau der, den ich bereits gezeigt hatte.
Wo liegt genau das Problem? Welche Input-Daten hast Du und wie möchtest Du später darauf zugreifen? Vielleicht wäre auch ein
sparse
Array sinnvoll. Jedenfalls sie Dein valueKey {[0 1], [0 2], [0 3], [0 4]} sehr danach aus, als könnten dies Indices sein. Und dann wäre ein einfaches indiziertes Array einfach sehr naheliegend. Oder geht es auch um valueKeys wie {[0, 1], [0, 1e6], [1e200, 3], [-pi, -1e100]}?
Bitte erkläre also nochmal genauer, was Du erreichen möchtest. Erst dann kann man wirklich gute Vorschläge dazu machen, in welcher Form Du die Daten abspeichern kannst.
Gruß, Jan
|
|
|
Johannson |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 02.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.01.2016, 12:49
Titel:
|
 |
Hallo,
sorry wenn ich mich unklar ausdrücke. Ich versuche das jetzt nochmal zu erklären.
Eigentlich ist das Problem relativ simpel.
Ich habe für ein numerisches Verfahren ein zweidimensionales Gitter. Bsp: 10x30
An jeder Stelle steht eine Temperatur.
Jetzt möchte ich das Problem mit dem SOR-Verfahren lösen.
Dafür soll das zweidimensionale Gitter auf einen eindimensionalen Vektor sortiert werden.
Damit ich die einzelnen Werte später aber schnell wieder ansteuern kann wollte ich das in einem Dictionary speichern. Das heißt:
Key Value
[0 1] 200
[0 2] 250
...
[0 10] 300
[1 0] 250
...
Es geht mir also darum die Werte in einem eindimensionalen Vektor zu speichern und diese aber schnell ansprechen zu können mit dem Key.
Ich hoffe das ist verständlich.
Vielen Dank.
Grüße Johannes
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 03.01.2016, 16:18
Titel:
|
 |
Hallo Johannson,
Ein einfacher numerischer Vektor und eine lineare Indizierung ist sicherlich die schnellste Methode.
Intern müssen bei Container.Maps so viele Umwege gemacht werden, dass dies vermutlich 10 oder 100 mal langsamer ist.
Gruß, Jan
|
|
|
Johannson |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 02.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.01.2016, 19:38
Titel:
|
 |
Ales klar.
Dann werde ich das damit mal ausprobieren.
Vielen Dank!
|
|
|
|
|
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.
|
|