3
通常我會根據數據類型使用cell()
,zeros()
或ones()
進行預分配,但預先分配表的最佳方式是什麼,因爲它可以容納各種數據結構?在Matlab中預分配表格的最佳方法是什麼?
我說的是在Matlab 2013b添加table()
功能。
很顯然,我可以用這樣的代碼保留內存:
T = table(cell(x,y))
但是當我的表應該舉辦各種數據類型我遇到的問題。想象一下,現在我想填寫一列整數,或者像我的情況一樣,填充每行包含一個字符串,一個整數和一個浮點數的觀察值。牛逼
嗯好點。在我的情況下,我知道每列將會是什麼類型的數據,例如列「name」將始終包含字符串。然後,我在循環的每次迭代中向表中添加各種行(數量取決於數據)。 所以,如果我正確理解你,我應該使用預先分配的數據創建變量。例如名稱的長單元格()列,並將其包含在表格中。 但是我不知道最後會有多少行。過高估計是否是一個好主意,並最終刪除空行? – florian
我無法給你一個很好的建議。它取決於你高估了多少。我的意思是,如果你預分配單元格,他們不會爲你的字符串分配空間,因爲Matlab應該知道它們有多長時間?相比於分配字符串,我想重塑單元格不會花費太多時間。除非你有可能有10萬個參賽作品。儘管如果性能是一個問題,重新分配10k單元可能會更好,然後分配300k並僅使用100k。 – Mathias
剛剛在這裏測試過:'a = cell(10000000,1)';可能足夠快,也不會佔用太多的內存。所以高估可能不會成爲一個問題,除非你超越了這個範圍 – Mathias