【问题标题】:Reading data from file into a two-dimensional array将文件中的数据读入二维数组
【发布时间】:2014-04-20 17:38:46
【问题描述】:

我对 fortran 和编程完全陌生(经验不足)。我很难为以下内容编写代码。

我需要使用两个输入文件中的数据将数据存储在二维数组中 然后我需要确定两个文件的大小 然后需要从两个维度中选择一个变量的特定值的变量 然后计算平均值 最后将结果写入一个新的数据文件。

例如:

  • 有两个无线电探空仪数据文件,不同数据大小的压力、高度、温度、露点值
  • 需要在 1000、850 和 500 的特定压力下获取高度、温度和露点的平均值(两个文件都有这些记录)并写入新文件。

我已经阅读了几本书,但无法掌握我正在寻找的确切内容。你们中的任何人都可以给我一些关于编码的见解吗?我真的很感谢你们。

【问题讨论】:

标签: arrays multidimensional-array multiple-columns fortran90


【解决方案1】:

您的代码将如下所示:

program main
    implicit none

    real::height(100)
    integer::i

    open(unit=16, file='height.dat')

    do i = 1, 100
        read(16, *) height(i)
    enddo

    close(16)

    open(unit=16, file='mean_height.dat')

    write(16, *) sum(height)/100

    close(16)

end program

假设有一个名为height.dat 的文件,每行有一个高度值,总共100 行。 它读取 100 个高度,然后将平均高度写入文件 mean_height.dat。 您显然必须对此进行重大修改。 例如,您不知道文件中有 100 行,因此您需要为读取的值使用 allocatable 数组:

program main
    implicit none

    real,allocatable::height(:)
    integer::i, N

    !Code that figures out how many lines there are
    !...

    allocate(height(N))

    open(unit=16, file='height.dat')

    do i = 1, N

这应该可以帮助您入门...理想情况下,您可以从比您描述的更简单的输入文件开始学习基础知识。

【讨论】:

  • 压力(hPa) 高度(m) 温度(C) 露点温度(C) 1006.0 19.0 26.0 20.0 1000.0 74.0 25.2 18.2 942.0 592.0 21.2 17.1
  • 谢谢@bdforbes,虽然我的情况略有不同,但可以使用某些部分,这将有助于我进行编码。 我的输入文件;压力(hPa) 高度(m) 温度(C) 露点温度(C) 1006.0 19.0 26.0 20.0 1000.0 74.0 25.2 18.2 …. …… …… …… 20.0 26490.0 -46.9 -81.9 并且有两个这样的输入文件,相同的格式,不同的值,不同的行数(记录)
  • 你能把文件贴到粘贴箱吗?
  • 输入文件 1 - (copy.com/liwTWfPfGtnI) & 输入文件 2 - (copy.com/Ack0kYUIHemB)
  • 一旦你弄清楚有多少行(可能通过阅读文件一次然后rewinding),你可以循环以下语句:read(16, *) pressure(i), height(i), temp(i), dewpointtemp(i)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 2014-09-13
相关资源
最近更新 更多