首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Matlab 2D数组读取到intel-fortran,并将intel-fortran写入matlab文件

将Matlab 2D数组读取到intel-fortran,并将intel-fortran写入matlab文件
EN

Stack Overflow用户
提问于 2018-01-23 15:50:55
回答 1查看 298关注 0票数 0

我正在使用带有Visual Studio 2008 SP1的英特尔Fortran。

我的主要问题是:我想从Matlab的.mat文件中读取二维数组到fortran中。另外,将Fortran 2D矩阵的输出保存为.mat文件,因为目前我可以使用以下命令将其保存为文本文件:

代码语言:javascript
复制
write(unit = #, <linelength>F22.8>),matrixname

这条线行得通,但我不确定我的双精度是否松动了。如果我不放松精确度,我可以坚持下去,否则我将需要帮助。我只需要一种方法来从Matlab文件中读取到英特尔-fortran,并保持精度。这些数组中没有字符,它们是数值。

我需要保持精度,因为我使用的是球函数,它们可以是高度发散的。

EN

回答 1

Stack Overflow用户

发布于 2018-01-23 23:57:45

matlab内部的".mat“根据版本的不同是”可能“或”可能不“压缩的。我想你不会想把它用在便携文件传输上。(在试图找到关于这个主题的良好文档后,我想知道@HPM在他的评论中是否具有讽刺意味。))

对于单个数组,一种简单的方法是简单地交换为原始二进制文件。

用matlab编写的示例:

代码语言:javascript
复制
a=[1. 2. ; 3. 4. ]
fileID = fopen('test.bin','w');
fwrite(fileID,a,'double');
fclose(fileID);

然后在fortran中

代码语言:javascript
复制
implicit none
double precision a(2,2)
open(unit=100,'test.bin',access='stream',form='unformatted')
read(100)a

注意,这里的数据实际上是“扁平的”,读取程序需要知道数组的维数。当然,如果需要,您可以将尺寸写入文件。

当然,二进制数据存在许多潜在的可移植性问题,但假设您在相同的硬件上进行读/写,这将适用于大多数情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48396639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档