簡體   English   中英

在MATLAB中處理大量結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM