在Matlab中将数组另存为bin,将其传递给Python并在Python中读取bin文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Matlab中将数组另存为bin,将其传递给Python并在Python中读取bin文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1703字,纯文字阅读大概需要3分钟。
内容图文
![在Matlab中将数组另存为bin,将其传递给Python并在Python中读取bin文件](/upload/InfoBanner/zyjiaocheng/673/a56a0d44a7234cb5818225b2d3aba72d.jpg)
我目前正在尝试在Matlab中将数组另存为bin文件,将其发送到Python并在Python中读取.但是,我运行Matlab时显示错误.我正在使用以下代码:
在Matlab中读取数组,转换为bin文件并传递给Python:
array1 = rand(5,1); %% array1 is the desired array that needs to be sent to Python
fid = fopen('nazmul.bin','wb'); %% I want to save array1 in the nazmul.bin file
fwrite(fid,array1);
status=fclose(fid);
python('squared.py','nazmul.bin'); %% I want to send the parameters to squared.py program
squared.py文件:
import sys
if __name__ == '__main__':
f = open("nazmul.bin", "rb") # Trying to open the bin file
try:
byte = f.read(1) # Reading the bin file and saving it in the byte array
while byte != "":
# Do stuff with byte.
byte = f.read(1)
finally:
f.close()
print byte # printing the byte array from Python
但是,当我运行该程序时,什么也没打印.我猜bin文件没有正确传递到squared.py文件.
感谢您的反馈意见.
纳兹穆尔
解决方法:
这里有几个问题.
>检查“ main”时,应使用双下划线.即__main__ ==“ __main__”.
>您不是在收集字节,而是总是存储读取的最后一个字节.因此,最后一个字节始终为“”.
>最后,似乎缩进是不正确的.我认为这只是一个stackoverflow格式错误.
>另一个潜在问题-在MATLAB中使用fwrite(fid,A)时,它假定您要写入字节(8位数字).但是,您的rand()命令生成实数,因此MATLAB首先将结果四舍五入为整数,并且您的二进制文件将仅保留“ 0”或“ 1”.
最后说明:一次读取一个字节的文件可能效率很低.最好大块地读取文件,或者-如果它是小文件,则通过一次read()操作读取整个文件.
更正后的Python代码如下:
if __name__ == '__main__':
f = open("xxx.bin", "rb") # Trying to open the bin file
try:
a = [];
byte = f.read(1) # Reading the bin file and saving it in the byte array
while byte != "":
a.append(byte);
# Do stuff with byte.
byte = f.read(1)
finally:
f.close()
print a;
内容总结
以上是互联网集市为您收集整理的在Matlab中将数组另存为bin,将其传递给Python并在Python中读取bin文件全部内容,希望文章能够帮你解决在Matlab中将数组另存为bin,将其传递给Python并在Python中读取bin文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。