如何在 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(由save
和load
在内部使用)来序列化/反序列化数据。这将允许您将矩阵 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 文件内容保存在内存中?的主要内容,如果未能解决你的问题,请参考以下文章