我想将Matlab工作区中的一些数据打包成一个二进制文件,然后能够在稍后的时间将这些数据恢复回工作区。 (该数据形成的遥测数据日志的标题的一部分。这是非常有用的,该文件中直接产生的遥测数据。)如何将Matlab工作区数据打包到二进制文件中?
我知道,load
和save
命令将做的正是这一点,但我认为我的病情是独特的。一旦我将工作区数据保存到文件中,我有另一个程序(用C编写)打开文件并将遥测数据附加到文件。我不认为load
和save
将处理此问题。
我已经使用Mathworks File Exchange上的cstruct
工具将数据打包到blob中,并使用fwrite
将其写入文件,从而部分解决了该问题。使用这种方法的警告是cstruct
在解包时必须知道打包格式。数据的格式已经发生变化,并且可能会再次发生变化,因此删除此要求会很好。
理想情况下,我想写一个字节数X到文件头,然后是包含MAT格式数据的二进制BLOB(大小为X),接着是可变大小的遥测数据块。当我想解包数据时,我读取X字节的数据,将其解释为MAT文件,并且它奇迹般地出现在工作区中。
是否有包装的工作空间变量为二进制的blob,然后没有他们的结构,的先验知识,但二进制数据存储为一个较大的文件的一部分拆包他们的一种方式?
编辑:添加说明,我不认为load
和save
是我所需要的。
感谢您的建议,shoelzer。我认为从我原来的措辞来看并不清楚,但我希望将打包的数据嵌入到更大的二进制文件中。我不认为“保存”和“加载”这样做。我编辑了我的问题,使这个消息更加清晰。 – 2013-02-20 03:48:03
@RyanEdwards明白了。我更新了我的答案。 – shoelzer 2013-02-20 04:00:54
这正是我想到的解决方案,虽然我希望没有临时文件的解决方案。 – 2013-02-20 04:04:54