【发布时间】:2018-05-25 08:12:05
【问题描述】:
我想获取特定矩阵的 .mat 文件的字节数组。我该怎么做?
我可以通过这个命令在磁盘上保存一个矩阵:
save('a.mat', 'a')
现在,我不想将 .mat 文件保存在磁盘上。相反,我希望它在内存中通过网络发送。
【问题讨论】:
-
你的意思是
load('a.mat')?
标签: arrays matlab serialization mat-file
我想获取特定矩阵的 .mat 文件的字节数组。我该怎么做?
我可以通过这个命令在磁盘上保存一个矩阵:
save('a.mat', 'a')
现在,我不想将 .mat 文件保存在磁盘上。相反,我希望它在内存中通过网络发送。
【问题讨论】:
load('a.mat')?
标签: arrays matlab serialization mat-file
您可以使用几个undocumented functions(由save 和load 在内部使用)来序列化/反序列化数据。这将允许您将矩阵 a 编码为字节流,就像 save 将其存储在 .mat 文件中一样:
byteStream = getByteStreamFromArray(a);
然后您可以通过网络发送此字节流数据并在接收端对其进行解码,如下所示:
a = getArrayFromByteStream(byteStream);
【讨论】:
嗯...如果你想通过网络发送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.
【讨论】:
我认为这是不可能的。但是您可以将 MAT 文件写入临时目录(请参阅 tempdir),然后将其作为二进制文件打开,将其内容作为 uint8 数组或类似的东西读回内存中。
【讨论】: