IO为朱莉娅阅读fortran文件

时间:2014-07-16 22:25:47

标签: fortran complex-numbers julia

Noob问题:

我在Fortran中完成了复杂矩阵的输出,内容如下:

( - 0.594209719263636,1.463867815703586E-006) (-0.783378034185788,-0.182301028756558)( - 0.794024313844809,0.128219337674814) (0.592814294881930,4.069892201461069E-002)

我想在julia程序中阅读和使用这些数据。

  1. 不,我不想改变写作格式,我想学习如何去掉 "垃圾"字符如'(',或','。这可能对任意输入文件有用。
  2. 2.我尝试过以下代码:

    file = open(pathtofilename, "r")
    data_str = readall(ifile)
    data_numbers_str = split(data_str)
    data_numbers = split(data_numbers_str, ['('])
    

    但是,手册并不是那么容易解释[http://docs.julialang.org/en/release-0.2/stdlib/base/?highlight=split]

1 个答案:

答案 0 :(得分:2)

这是我要做的事情

data = "(-0.594209719263636,1.463867815703586E-006) (-0.783378034185788,-0.182301028756558) (-0.794024313844809,0.128219337674814) (0.592814294881930,4.069892201461069E-002)"

function pair_to_complex(pair)
    nums = float(split(pair[2:end-1], ","))
    return Complex(nums...)
end
numbers = map(pair_to_complex, split(data, " "))

解释

  • pair[2:end-1]删除括号
  • 然后我在,上拆分它以获得一个包含两个数字的数组,仍然是字符串
  • 我使用float()将它们转换为Float64,获取了一个浮点数组
  • 我制作了一个新的复数。 ...将数组展开,以便为Complex提供两个参数 - 我本可以Complex(nums[1],nums[2])
  • 然后,我使用map将此逻辑应用于数据中的每个术语。