Wie speichere ich diese Struktur (Liste der Listen mit ganzen Zahlen) in Matlab?
Ich muss eine Liste mit ganzen Zahlen speichern. Zum Beispiel,X[1]
sollte in der Lage sein zu enthalten[1 3 5]
währendX[2]
könnte enthalten[1 2]
. Was ist die beste Lösung? Ein Zellenarray?
Die Hintergrundgeschichte:
Für ein Projekt berechne ich die Schnittpunkte zwischen N Linien und M Würfeln vor. Diese werden auf zwei Arten abgerufen: Wenn ein Zeilenindex angegeben ist, möchte ich eine Liste von Cubes, durch die er geleitet wird, und wenn ein Cube-Index angegeben ist, möchte ich eine Liste von Zeilen, durch die er geleitet wird.
Typische Werte sind N = 2 ^ 24 und M = 2 ^ 18, was bedeutet, dass eine Schnittmatrix (NxM) nicht in Frage kommt. Glücklicherweise geht die durchschnittliche Linie nur durch M ^ (1/3) = 2 ^ 6 Würfel. Derzeit speichere ich die Struktur als NxM ^ (1/3) Matrix, so dassX(n,:)
ist ein Vektor von Würfeln, durch den die n-te Linie verläuft (mit Nullen aufgefüllt).
Dies funktioniert gut für das Abrufen von Cubes mit einem Listenindex, aber es stellt sich heraus, dass der Flaschenhals meines Codes das Abrufen von Zeilen mit einem Cubeindex ist. Ich mache es mitfind(X==m)
wobei m der Würfelindex ist.) Ich kann die entgegengesetzte Matrix nicht erstellen, da die Anzahl der Linien, die durch einen einzelnen Würfel verlaufen, sehr hoch sein kann, obwohl sie im Durchschnitt niedrig sind.