微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用Python编写binp文件,用Matlab读取

如何解决用Python编写binp文件,用Matlab读取

我正在Pyton中编写一个.binp文件,并试图再次在Matlab中读取它。

.binp文件的X-Header具有11个参数,Y-Header具有7个参数

#Data
X[0,0] = 0 
X[0,1] = -delta_width/2 
X[0,2] = -delta_height/2 
X[0,3] = 0.0 
X[0,4] = delta_width/2 
X[0,5] = 0.0 
X[0,6] = 0.0 
X[0,7] = 0.0 
X[0,8] = delta_height/2 
X[0,9] = 0.0 
X[0,10] = n_nvector_facet 

Y = np.zeros((n_facet*n_nvector_facet,7)) # only one normal vector per facet
Y[0,0] = -delta_width/2 
Y[0,1] = -delta_height/2 
Y[0,2] = 0.0 
Y[0,3] = 0.0 
Y[0,4] = 0.0 
Y[0,5] = 1.0 
Y[0,6] = delta_width*delta_height

#Writing to .binp
np.uint32(X[0,0]).tofile(f)
np.float32(X[0,1:9]).tofile(f)
np.uint32(X[0,10]).tofile(f)
np.float32(Y[0,0:6]).tofile(f)

Matlab代码-读取文件

fid = fopen(filepath);
X1(1,1) = fread(fid,1,'int32');
X2(1,1:9) = fread(fid,9,'float32'); 
X3(1,'uint32'); 

n = nfacetrays(1,1)*6;
    
Y{1} = fread(fid,n,'float32');

在读取的文件中缺少值

  • 书面X标题:0 -2.5 -1.5 0 2.5 0 0 0 1.5 0 1
  • 书面Y头: -2.5 -1.5 0 0 0 1 15
  • 读取X标头:0 -2.5000000 -1.5000000 0 2.5000000 0 0 0 1.5000000 1.4012985e-45 3223322624
  • 读取Y标题 -1.50000000000000 0 0 0 1 0 2.50000000000000

因此,基本上在X标头0和1或/和Y标头中-2.5被错误地读取,或者缺少其中之一,因为在读取的Y标头中,它以-1.5而不是-2.5开头。 / p>

有什么想法吗?这个错误是从哪里来的?

解决方法

更改

np.float32(X[0,1:9]).tofile(f)

np.float32(X[0,1:10]).tofile(f)

:的上限不包括在内。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。