我正在使用带有Visual Studio 2008 SP1的英特尔Fortran。
我的主要问题是:我想从Matlab的.mat文件中读取二维数组到fortran中。另外,将Fortran 2D矩阵的输出保存为.mat文件,因为目前我可以使用以下命令将其保存为文本文件:
write(unit = #, <linelength>F22.8>),matrixname这条线行得通,但我不确定我的双精度是否松动了。如果我不放松精确度,我可以坚持下去,否则我将需要帮助。我只需要一种方法来从Matlab文件中读取到英特尔-fortran,并保持精度。这些数组中没有字符,它们是数值。
我需要保持精度,因为我使用的是球函数,它们可以是高度发散的。
发布于 2018-01-23 23:57:45
matlab内部的".mat“根据版本的不同是”可能“或”可能不“压缩的。我想你不会想把它用在便携文件传输上。(在试图找到关于这个主题的良好文档后,我想知道@HPM在他的评论中是否具有讽刺意味。))
对于单个数组,一种简单的方法是简单地交换为原始二进制文件。
用matlab编写的示例:
a=[1. 2. ; 3. 4. ]
fileID = fopen('test.bin','w');
fwrite(fileID,a,'double');
fclose(fileID);然后在fortran中
implicit none
double precision a(2,2)
open(unit=100,'test.bin',access='stream',form='unformatted')
read(100)a注意,这里的数据实际上是“扁平的”,读取程序需要知道数组的维数。当然,如果需要,您可以将尺寸写入文件。
当然,二进制数据存在许多潜在的可移植性问题,但假设您在相同的硬件上进行读/写,这将适用于大多数情况。
https://stackoverflow.com/questions/48396639
复制相似问题