fft fortran的相位角

时间:2014-02-10 07:30:41

标签: fft fortran90

你好这个问题可能看起来很愚蠢,但我对任何编程都不熟悉。我刚刚对数据进行了傅立叶变换(使用提供给我的子程序)并得到了复杂格式的值,如下所示:

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

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

1 个答案:

答案 0 :(得分:3)

目前还不完全清楚你的问题是什么,或者你有几个问题。如果您有一个名为z的复杂变量,那么您可以使用

之类的调用将其实部和虚部组件传递给atan2
atan2(aimag(z),real(z))

函数realaimag提取复数的组件。如果您正在处理非默认类型,那么这些函数也可以理解类型,因此如果real(z,real64)是类型参数,real64之类的调用将提取{{1}的实际组件} z种。

请注意,这些函数都是real64,这意味着它们可以应用于数组的每个元素并返回一个元素数组;所以打电话,如

elemental

将返回与real(z_array) 形状相同的实数数组。

我认为您应该能够直接从文件中读取复杂值,然后将其分解为z_array的调用。