[英]Handling large amount of structures in MATLAB
我需要處理大量(數千萬)MATLAB結構; 我需要十幾個字段所以我認為記憶不會成為問題,直到我發現這個( 解釋 )
>> s=[];
>> s.first=1;
>> whos
Name Size Bytes Class Attributes
s 1x1 132 struct
>> s.second=2;
>> whos
Name Size Bytes Class Attributes
s 1x1 264 struct
>> s.third=3;
>> whos
Name Size Bytes Class Attributes
s 1x1 396 struct
這顯然阻止我使用數千萬個更大的結構。
求助於類解決了內存使用問題(每個結構數組的標記為56個字節),但它在構造和對象的破壞方面要慢得多。
如何創建一個輕量級的結構(如C結構)並快速?
將這些結構轉換為數組,然后通過類提供訪問器方法。
(a)使用大數組(其中struct 1的'first'字段是'first'數組的元素1,對於struct 2,它在元素2中,等等),正如Pyrolistical所暗示的那樣。
(b)考慮使用另一種語言,如C ++(或Java),它可以更好地控制內存使用。 您可以通過mex函數訪問C ++代碼(有時可能會有點困難)。 您可以直接從Matlab評估Java字節碼。
另一種選擇:在隱藏的全局結構中保存數組的結構。 創建一個挖掘此全局結構的類對象,以分割出僅適用於該實例的數據。
可以使用PERSISTENT關鍵字和/或使用private /目錄更清晰地實現全局結構以進行信息隱藏。 如果您使用的是2008a或更新版本,新的句柄對象系統應該有助於使實現更加清晰。
如果你真的有大而復雜的數據結構,我會認真考慮另一種語言,如C ++,Java或Python w / numpy。 當我的任務很好地映射到它時,我喜歡Matlab。 數據結構不是Matlab的優勢之一,特別是在2008a之前。
你對課程意味着什么? 據我記得,類是matlab中用於類型的術語。 我猜你的意思是一個自定義的類。
解決方案(在matlab文檔中也推薦使用)是從結構數組切換到數組結構(在R,G,B的鏈接中查看)示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.