【发布时间】:2021-08-28 00:07:03
【问题描述】:
我正在尝试将 matlab 脚本转换为 python。该脚本涉及将数据写入二进制文件。我注意到文件之间的差异,特别是在编写矩阵/numpy 数组时。在编写其他变量类型(int、string 等)时,文件与所需的相同。
Matlab 代码:
fid = fopen("test2.txt", "wb");
a = [[1 2];[3 4]];
fwrite(fid, a, "float64");
fclose(fid);
matlab结果(如记事本所示):
ð? @@@
Python 代码:
import numpy as np
with open("test2.txt", "wb") as fid:
a = np.array([[1, 2], [3, 4]])
fid.write(a.astype("float64"))
# a.astype("float64").tofile(fid) # also doesn't give correct result
Python结果(如记事本所示):
ð? @@@
【问题讨论】:
-
你发布的结果和我一模一样,你能指出区别吗?
-
@BatWannaBe 看起来 SO 去除了显示差异的字符(正方形)。添加了显示差异的屏幕截图。
-
您的 NumPy 和 MATLAB 矩阵不一样,它们是彼此的转置版本。因此,它们以不同的顺序写入文件。
-
还要注意,在MATLAB中,
a = [[1 2];[3 4]];有很多多余的括号,最好写成a = [1 2; 3 4];。 -
我不认为它们是相互转换的版本。为了证实这一点,a = [1 2 3; 4 5 6];和 a = np.array([[1, 2, 3], [4, 5, 6]]) 给出相同的大小/形状,但在二进制文件中显示不同。
标签: python numpy matlab binaryfiles