如何将Matlab工作区数据打包/解压缩到二进制文件中?

时间:2013-02-20 01:48:23

标签: matlab binaryfiles

我想将Matlab工作区中的一些数据打包成二进制文件,然后能够在以后将这些数据恢复到工作区。 (数据构成了遥测数据日志标题的一部分。将直接生成遥测数据的数据直接存储在文件中非常有用。)

我知道loadsave命令就是这样做的,但我认为我的情况是独一无二的。将工作空间数据保存到文件后,我有另一个程序(用C编写)打开文件并将遥测数据附加到文件中。我认为loadsave不会处理这个问题。

我使用Mathworks文件交换中的cstruct工具部分解决了问题,将数据打包到blob中并使用fwrite将其写入文件。使用这种方法的警告是cstruct在解包时必须知道打包格式。数据格式已经改变,可能会再次改变,因此最好删除此要求。

理想情况下,我想将一个字节数X写入文件头,后跟一个包含MAT格式数据的二进制blob(大小为X),然后是可变大小的遥测数据blob。当我想要解压缩数据时,我读取X字节的数据,将其解释为MAT文件,它神奇地出现在工作区中。

有没有办法将工作区变量打包到二进制blob,然后在不事先了解其结构的情况下解压缩它们,但二进制数据存储为更大文件的一部分

修改:添加说明我认为loadsave不是我需要的。

1 个答案:

答案 0 :(得分:3)

Matlab的save命令正是你想要的。要再次加载变量,请使用load

更新:现在我看到你要做的事了。我最好的想法是使用save创建一个.mat文件,然后将该文件嵌入到自定义二进制文件中(只需复制字节)。要恢复Matlab数据,请提取这些字节以创建新的.mat文件,然后使用load。这种方法很好,因为你做了最小的二进制格式化,它将处理任何 Matlab数据。

额外提示:临时.mat文件的好地方在tempdir