我有形式的陣列的集合的有效方式,存儲和定位陣列在Matlab
a = [1 2 3 5 6 8 9 10]
b = [1 2 3 4 7 14]
c = [1 2 3 4 5 6 7 8 15 19 20]
也就是說,每一個都是從1非重複數至M的集合(寫成M這個例子是20,但實際上可能會大得多)。一般來說,我會有很多這樣的數組(多於3個,但事先並不知道有多少,可能在5000-10000左右)有重複(也就是說,數組b可能會出現多次)。
目標:我想將數組存儲在某個對象中,稱之爲X,它跟蹤它包含的每個數組的多少個實例。此外,當面對一個新的數組時,我們應該能夠搜索X並增加對象中該數組的數量,或者如果它不在數組中,則將它添加到對象中(計數爲1)。
問題:什麼是在Matlab中實現目標的有效方法?
我試過到目前爲止:
我在想轉換陣列邏輯陣列,例如,
a = [1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0];
那麼也許將上述二進制編號a_bin並索引存儲編號的單元格數組X,即X {a_bin}存儲a出現的次數。雖然a_bin對於大數M可能會變得非常大,但這看起來很差。
這聽起來像一個XY問題給我。爲什麼你會得到這麼多不同長度的數組,你需要一直保持記憶?我沒有看到優勢。 – Bernhard
@伯恩哈德我不明白爲什麼這是一個問題。難道不應該說出他們所嘗試過的,而不僅僅是問一個問題嗎?另外,我不明白爲什麼我需要證明我爲什麼要嘗試做什麼的理由。 – jonem
我的觀點在這個問題上表達得更好:http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem我並不是說這是你的情況,但它看起來很多喜歡它, – Bernhard