2014-02-10 90 views
0

你好这个问题看起来很愚蠢,但我对任何类型的编程都是陌生的。我只是做了一个数据的傅里叶变换(使用提供给我的子程序)并获得了复数格式的值,如下所示:fft fortran相位角

(-1.6391770E-08,-0.3750000) (1.6391770E-08 ,0.3750000) ..............等

我在一个dat文件保存这些格式。现在我需要计算这个数据的相位角,我试图用'atan2(y,x)'内部函数,但它需要分别作为x和y的实数和虚数。我不知道如何从上面的复杂格式中提取这些x和y。我试图使用open和read函数,但它不起作用,因为在dat文件中的数据之前和之后都有括号。我在这里错过了什么吗?我需要找出fft数据的阶段。如果我的问题含糊不清,请提前致谢,如果有的话,我会尽力说清楚。

回答

2

这不完全清楚你的问题是什么,或者你有几个问题。如果你有一个叫,说,z复杂的变量,那么你可以通过它的实部和虚部到atan2与呼叫如

atan2(aimag(z),real(z)) 

功能realaimag提取复数的组成部分。如果您正在使用非默认的工作种类,那么这些功能也明白种,所以一个调用,如real(z,real64)会,如果real64是一种类型的参数,与real64样提取z实部。

注意,这些功能都elemental,这意味着它们可被应用于阵列的每个元素,并返回元件的阵列;这样的呼叫如

real(z_array) 

将返回实数的阵列具有相同的形状z_array

在我看来,如果你应该能够直接从文件中读取复杂的值,然后它们分解为您来电atan2

+0

第一个解决了我的问题。谢谢。现在只有一个月,我已经开始编程,所以是的,我仍然有几个问题,我正在努力。再一次感谢你 – victoriajpn