我有一个复杂值的二进制方阵,存储在.bin格式文件中。我曾尝试用MATLAB脚本阅读本为100×100矩阵:从Matlab中的文件读取二进制矩阵
i=fopen('matrix.bin','r')
A=fread(i,[100 100]
此代码不能正确读取包含在A
复数值。我只得到一个100乘100的整数矩阵。
我有一个复杂值的二进制方阵,存储在.bin格式文件中。我曾尝试用MATLAB脚本阅读本为100×100矩阵:从Matlab中的文件读取二进制矩阵
i=fopen('matrix.bin','r')
A=fread(i,[100 100]
此代码不能正确读取包含在A
复数值。我只得到一个100乘100的整数矩阵。
MATLAB fread
支持ANSI C类型,但没有提供原生ANSI C类型来表示复数。很可能,一个复数存储为一对实数和虚数。
不作为二进制文件是如何保存的信息,你仍然可以进行一些测试摸不着头脑。如果复数表示为实数部分和虚数部分,并且精度都为double
,则单个复数将占用8 + 8 = 16个字节。我们可以通过导航到文件末尾来测试它,并查看有多少个字节。
fID = fopen('matrix.bin','r')
fseek(fID, 0, 'eof') % Go to the end of file
ftell(fID) % Tell current position in the open file
fclose(fID)
如果这个数字等于16 * 100 * 100 = 160000,那么你很幸运。有保存在这个文件中没有多余的东西,你可以简单地通过这个代码读取的数据:
fID = fopen('matrix.bin','r')
data = []
for ii = 1:10000
data = [data; fread(fID, 2, 'double')']
end
fclose(fID)
你会最终有一个10000 * 2数组,代表复数的每一行。如果文件大小为80000,那么实部和虚部都可以保存在single
数据类型中。如果文件大小是其他数字,那么它可能意味着一些附加信息存储在二进制文件中。您必须知道附加信息的存储情况,以便您可以正确读取文件。
在我的代码中输入错误:i = fopen('matrix.bin','r') A = fread(i,[100 100]) – Maya
“bin”文件的格式是什么?复杂数据如何存储? – rayryeng
bin文件是由一个计算器生成的,它包含一个复杂的矩阵,它不可能显示这个文件的内容。 你是什么意思的bin格式? – Maya