我想讀取非均勻二進制數據到matlab中。我從一開始就知道它是多少以及每個細分類型的數據類型。例如:Matlab讀取異源二進制數據
%double %double %int32 ...
然後重複大約一百萬次。易於使用fread
進行處理,因爲知道每個片段的咬合數量,因此可以計算每行的跳過值。
但現在的數據段看起來是這樣的:
%double %int32%*char %double %double ...
由此int
前*char
是說字符串的長度。這帶來了我無法再計算跳過的問題,而且我一直在逐行閱讀整個文件,因此需要做更多的文件訪問並減慢了轉換速度。
爲了獲得至少一些加速度,我一次不會讀取所有%double %double ...
(大約30個元素),然後使用緩衝區填充數組。在C這將是一個相當容易的任務在這裏,沒有memcpy和不直接訪問指針...
你知道任何方式來實現這一點,不使用mex文件?
我不認爲有一個內建函數,它可以理解爲「讀取這個int所告訴你的字符數」。有了這種格式的「動態性」,我猜重複的freads是唯一的選擇。 – sebastian
另一個想法:如果你對格式有影響,你可能會考慮存儲固定長度的字符,如果需要填充較短的char數組。這僅適用於char數組全部在一定長度內的情況... – sebastian
@sebastian。不幸的是,我對這方面沒有任何控制。它幾乎是固定的。否則,我會選擇像HDF5這樣的東西,我不必處理所有這些... –