Noob问题:
我在Fortran中完成了复杂矩阵的输出,内容如下:
( - 0.594209719263636,1.463867815703586E-006) (-0.783378034185788,-0.182301028756558)( - 0.794024313844809,0.128219337674814) (0.592814294881930,4.069892201461069E-002)
我想在julia程序中阅读和使用这些数据。
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]。
答案 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
将此逻辑应用于数据中的每个术语。