2013-02-20 100 views
3

我想將Matlab工作區中的一些數據打包成一個二進制文件,然後能夠在稍後的時間將這些數據恢復回工作區。 (該數據形成的遙測數據日誌的標題的一部分。這是非常有用的,該文件中直接產生的遙測數據。)如何將Matlab工作區數據打包到二進制文件中?

我知道,loadsave命令將做的正是這一點,但我認爲我的病情是獨特的。一旦我將工作區數據保存到文件中,我有另一個程序(用C編寫)打開文件並將遙測數據附加到文件。我不認爲loadsave將處理此問題。

我已經使用Mathworks File Exchange上的cstruct工具將數據打包到blob中,並使用fwrite將其寫入文件,從而部分解決了該問題。使用這種方法的警告是cstruct在解包時必須知道打包格式。數據的格式已經發生變化,並且可能會再次發生變化,因此刪除此要求會很好。

理想情況下,我想寫一個字節數X到文件頭,然後是包含MAT格式數據的二進制BLOB(大小爲X),接着是可變大小的遙測數據塊。當我想解包數據時,我讀取X字節的數據,將其解釋爲MAT文件,並且它奇蹟般地出現在工作區中。

是否有包裝的工作空間變量爲二進制的blob,然後沒有他們的結構,的先驗知識,但二進制數據存儲爲一個較大的文件的一部分拆包他們的一種方式?

編輯:添加說明,我不認爲loadsave是我所需要的。

回答

3

Matlab的save命令正是你想要的。要再次加載變量,請使用load

更新:現在我明白你想要做什麼。我最好的想法是使用save創建一個.mat文件,然後將該文件嵌入到您的自定義二進制文件中(只需複製字節)。要恢復Matlab數據,請提取這些字節以創建一個新的.mat文件,然後使用load。這種方法很好,因爲你只需要最小的二進制格式,它將處理任何 Matlab數據。

獎勵提示:臨時.mat文件的好地方在tempdir

+0

感謝您的建議,shoelzer。我認爲從我原來的措辭來看並不清楚,但我希望將打包的數據嵌入到更大的二進制文件中。我不認爲「保存」和「加載」這樣做。我編輯了我的問題,使這個消息更加清晰。 – 2013-02-20 03:48:03

+1

@RyanEdwards明白了。我更新了我的答案。 – shoelzer 2013-02-20 04:00:54

+0

這正是我想到的解決方案,雖然我希望沒有臨時文件的解決方案。 – 2013-02-20 04:04:54

相關問題