Jak przechowywać tę strukturę (listę list liczb całkowitych) w Matlab?
Muszę zapisać listę list liczb całkowitych. Na przykład,X[1]
powinien być w stanie zawierać[1 3 5]
podczasX[2]
może zawierać[1 2]
. Jakie jest najlepsze rozwiązanie? Macierz komórek?
Historia z tyłu:
W przypadku projektu wstępnie obliczam przecięcia między N liniami i M kostkami. Są one pobierane na dwa sposoby: przy danym indeksie liniowym, chcę listę kostek, przez które przechodzi, i otrzymując indeks kostki, chcę listę linii, które przez nią przechodzą.
Typowe wartości to N = 2 ^ 24 i M = 2 ^ 18, co oznacza, że macierz przecięcia (NxM) jest wykluczona. Na szczęście średnia linia przechodzi tylko przez M ^ (1/3) = 2 ^ 6 kostek. Obecnie przechowuję strukturę jako macierz NxM ^ (1/3), więcX(n,:)
to wektor kostek, przez które przechodzi n-ty wiersz (wypełniony zerami).
Działa to dobrze w przypadku pobierania kostek z indeksem listy, ale okazuje się, że wąskim gardłem mojego kodu jest pobieranie linii o indeksie kostki. (Robię to zfind(X==m)
gdzie m jest indeksem kostki.) Nie mogę utworzyć przeciwnej macierzy, ponieważ liczba linii przechodzących przez pojedynczą kostkę może być bardzo wysoka, mimo że średnio jest niska.