Idl programming language IDL程序中的多过程
我用IDL编写了一个过程,它对数据执行一些计算并输出一个值数组。计算过程大约需要2分钟。Idl programming language IDL程序中的多过程,idl-programming-language,Idl Programming Language,我用IDL编写了一个过程,它对数据执行一些计算并输出一个值数组。计算过程大约需要2分钟。 然后,我需要对这些结果进行分析,理想情况下,我不希望每次需要执行不同的分析时都必须执行初始计算 实现这一点的最佳方法是将计算的输出保存到数据文件中,然后从其他程序中读取?或者有没有一种不那么麻烦的方法 提前感谢您提供的帮助假设您的数据计算很少发生更改,那么,是的,您最好的解决方案是将计算保存到输出文件中,然后将其读回分析程序。你没有说这是什么样的数据,所以很难给出更具体的答案。假设您有一个二维数据数组,您可
然后,我需要对这些结果进行分析,理想情况下,我不希望每次需要执行不同的分析时都必须执行初始计算 实现这一点的最佳方法是将计算的输出保存到数据文件中,然后从其他程序中读取?或者有没有一种不那么麻烦的方法
提前感谢您提供的帮助假设您的数据计算很少发生更改,那么,是的,您最好的解决方案是将计算保存到输出文件中,然后将其读回分析程序。你没有说这是什么样的数据,所以很难给出更具体的答案。假设您有一个二维数据数组,您可以将结果作为“平面”二进制文件写入:
pro perform_calculations
...
; assume mydata is a float array of dimensions [m,n]
openw, 1, 'results.dat'
writeu, 1, mydata
close, 1
end
然后,在同一个文件中或最好是不同的.pro文件中:
pro perform_analysis
mydata = fltarr(m, n)
openr, 1, 'results.dat'
readu, 1, mydata
close, 1
...
end
希望这有帮助。是的,保存到文件是保存第一个程序的结果以供第二个程序使用的最简单方法(假设您在两个程序之间退出IDL)。根据数据的类型和您的首选项,可能有保存数据的方法 最简单的方法: 由该命令创建的IDL.sav文件可以存储任何类型的数据、IDL变量,甚至IDL会话的整个状态。不幸的是,它只适用于IDL(没有其他语言),如果您升级IDL版本,它可能需要重新生成。您可以使用读取这些文件,它甚至可以记住变量的名称
my_variable = 'Some data here.'
SAVE, my_variable, FILENAME='myfile.sav' ; save variable(s)
... IDL opened and closed here ...
RESTORE, 'myfile.sav' ; read variable(s) from file
print, my_variable
Some data here.
最便捷的方式:
对于简单的表格数据,CSV具有高度可移植性和可读性的优势。然而,它也很慢,因为数字存储在ASCII中。用于书写和阅读
大多数可移植二进制格式:
对于需要由多种语言读取的复杂数据,请考虑或库。这两种都是二进制格式,可以存储大多数类型的IDL支持的数据。请注意,NetCDF实际上是HDF5的一个更易于使用的子集
最简单的二进制格式:表格数据的另一个选项是简单的二进制转储。使用
WRITEU
写入为写入而打开的普通文件。使用READU
读取打开的普通文件。保存是一种很好的方法,但是如果您在同一会话中运行,并且您的第二个程序不会弄乱第一个程序中的数据,您可以调用一个程序,然后将结果传递给第二个程序
pro do_calculations,result1,result2,result3
result1=1
result2=1.
result3=result1/result2
return
end
pro use_calculations,result1,result2,result3,result4
result4=result1-result2+result3
return
end
然后
如果您编辑使用\u计算
,您可以通过以下方式再次进行操作:
IDL> use_calculations,result1,result2,result3,result4
因为早期的结果将保留在内存中,除非use\u calculations
对它们做了不好的事情
您还可以设置第二个过程来检查它是否具有第一个过程的有效结果,并根据需要调用它
IDL> use_calculations,result1,result2,result3,result4