【问题标题】:How to save .mat file contents in memory in MATLAB?如何在 MATLAB 中将 .mat 文件内容保存在内存中?
【发布时间】:2018-05-25 08:12:05
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你的意思是load('a.mat')

标签: arrays matlab serialization mat-file


【解决方案1】:

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

byteStream = getByteStreamFromArray(a);

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

a = getArrayFromByteStream(byteStream);

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

      send_data(data);

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 2020-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-13
        • 2016-10-02
        • 2012-09-05
        相关资源
        最近更新 更多