Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将Matlab 2D数组读取到“英特尔fortran”,并将“英特尔fortran”写入到Matlab文件_Arrays_Matlab_Visual Studio_Fortran_Intel Fortran - Fatal编程技术网

Arrays 将Matlab 2D数组读取到“英特尔fortran”,并将“英特尔fortran”写入到Matlab文件

Arrays 将Matlab 2D数组读取到“英特尔fortran”,并将“英特尔fortran”写入到Matlab文件,arrays,matlab,visual-studio,fortran,intel-fortran,Arrays,Matlab,Visual Studio,Fortran,Intel Fortran,我正在将英特尔Fortran与Visual Studio 2008 SP1配合使用 我的主要问题是:我想把Matlab.mat文件中的2D数组读入fortran。另外,将Fortran 2D矩阵的输出保存到一个更好的.mat文件中,因为目前我可以使用以下方法将其保存到文本文件中: write(unit = #, <linelength>F22.8>),matrixname 写入(单位=#,F22.8>),矩阵名称 这条线行得通,但我不确定我的双精度是否有任何松动。如果我不放

我正在将英特尔Fortran与Visual Studio 2008 SP1配合使用

我的主要问题是:我想把Matlab.mat文件中的2D数组读入fortran。另外,将Fortran 2D矩阵的输出保存到一个更好的.mat文件中,因为目前我可以使用以下方法将其保存到文本文件中:

write(unit = #, <linelength>F22.8>),matrixname
写入(单位=#,F22.8>),矩阵名称
这条线行得通,但我不确定我的双精度是否有任何松动。如果我不放松精度,我可以坚持下去,否则我需要帮助。我只需要一种方法,在保持精度的情况下,将Matlab文件读取到intel fortran。这些数组中没有字符,它们是数值

我需要保持精度,因为我使用的是球面函数,它们可能会有很大的发散性

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
注意这里的数据实际上是“平坦的”,读取程序需要知道数组的尺寸。如果需要,您当然可以将尺寸写入文件

当然,二进制数据存在许多潜在的可移植性问题,但在大多数情况下,如果您在同一硬件上进行读/写操作,这将起作用。

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
注意这里的数据实际上是“平坦的”,读取程序需要知道数组的尺寸。如果需要,您当然可以将尺寸写入文件


当然,二进制数据存在许多潜在的可移植性问题,但在大多数情况下,如果您在同一硬件上进行读/写操作,这将起作用。

Mathworks为其产品发布了广泛且通常非常好的文档。我相信搜索会找到参考资料,向您展示如何使用Fortran程序读写mat文件。我也相信,文档将尽可能详细和具体。如果您使用的是
可分配的
,它是Fortran 90或更高版本。欢迎请拿着这本书读一读。该网站适合回答特定的问题。但你的问题不是很具体,它要求你写一个完整的教程。它还包含几个独立的点。我觉得这个网站太宽了。试着让它更简短、更具体。我已经把它缩短了一些。回答问题的一部分,是的,如果你使用文本文件进行数据传输,你会失去精度。Mathworks为他们的产品发布了广泛的、通常非常好的文档。我相信搜索会找到参考资料,向您展示如何使用Fortran程序读写mat文件。我也相信,文档将尽可能详细和具体。如果您使用的是
可分配的
,它是Fortran 90或更高版本。欢迎请拿着这本书读一读。该网站适合回答特定的问题。但你的问题不是很具体,它要求你写一个完整的教程。它还包含几个独立的点。我觉得这个网站太宽了。试着让它更简短、更具体。我已经把它缩短了一点。回答问题的一部分,是的,如果你使用文本文件进行数据传输,你会失去准确性。我想知道@HPM在他的评论中是否有讽刺意味,一点也没有。我想知道@HPM在他的评论中是否有讽刺意味,一点也没有。