如何在MATLAB中将.mat文件内容保存在内存中?

时间:2017-12-11 18:29:31

标签: arrays matlab serialization mat-file

我想获取特定矩阵的.mat文件的字节数组。我怎么能这样做?

我可以通过此命令在磁盘上保存矩阵:

save('a.mat', 'a')

现在,我不想将.mat文件保存在磁盘上。相反,我希望它在内存中通过网络发送。

3 个答案:

答案 0 :(得分:4)

您可以使用几个undocumented functions(由saveload内部使用)来序列化/反序列化数据。这将允许您将矩阵a编码为字节流,与将save存储在.mat文件中时的方式相同:

byteStream = getByteStreamFromArray(a);

然后,您可以通过网络发送此字节流数据,并在接收端对其进行解码,如下所示:

a = getArrayFromByteStream(byteStream);

答案 1 :(得分:1)

嗯......如果你想通过网络发送mat文件的二进制内容,你别无选择,只能按照以下步骤进行:

  1. mat格式将数据保存到磁盘:

    save('a.mat','a');

  2. 将保存的mat文件作为字节数组读取:

    fid = fopen('a.mat','r'); data = fread(fid);

  3. 通过网络发送二进制数据:

    send_data(data);

  4. 如果你想采用更精细的方法(我不推荐它),比如挖掘mat文件以提取数据或构建自己的mat文件在运行时this is a good starting point

答案 2 :(得分:0)

我不认为这是可能的。但您可以将MAT文件写入临时目录(请参阅tempdir),然后将其作为二进制文件打开,将其内容作为uint8数组或类似内容读回内存。