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

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

你的意思是load('a.mat') 【参考方案1】:

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

byteStream = getByteStreamFromArray(a);

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

a = getArrayFromByteStream(byteStream);

【讨论】:

【参考方案2】:

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

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

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

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

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

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

    send_data(data);

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于如何在 MATLAB 中将 .mat 文件内容保存在内存中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像上的绘图线保存为 .mat 文件

matlab中如何读取mat文件的矩阵

如何读写Matlab的mat文件?

Matlab如何导入mat文件并查看其中的数据

matlab中如何保存数据到指定文件夹中?

如何打开mat文件