我想获取特定矩阵的.mat文件的字节数组。我怎么能这样做?
我可以通过此命令在磁盘上保存矩阵:
save('a.mat', 'a')
现在,我不想将.mat文件保存在磁盘上。相反,我希望它在内存中通过网络发送。
答案 0 :(得分:4)
您可以使用几个undocumented functions(由save
和load
内部使用)来序列化/反序列化数据。这将允许您将矩阵a
编码为字节流,与将save
存储在.mat文件中时的方式相同:
byteStream = getByteStreamFromArray(a);
然后,您可以通过网络发送此字节流数据,并在接收端对其进行解码,如下所示:
a = getArrayFromByteStream(byteStream);
答案 1 :(得分:1)
嗯......如果你想通过网络发送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。
答案 2 :(得分:0)
我不认为这是可能的。但您可以将MAT文件写入临时目录(请参阅tempdir
),然后将其作为二进制文件打开,将其内容作为uint8数组或类似内容读回内存。