3

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

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

我使用cstructMathworks File Exchange 上的工具将数据打包到 blob 中并使用fwrite. 这种方法需要cstruct注意的是,在解包时必须注意打包格式。数据的格式已经改变并且很可能会再次改变,所以最好去掉这个要求。

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

有没有办法将工作区变量打包成二进制 blob,然后在不知道它们的结构的情况下将它们解包,但是二进制数据存储为更大文件的一部分

编辑:添加了我不认为load并且save是我需要的说明。

4

1 回答 1

3

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

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

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

于 2013-02-20T01:56:56.643 回答