Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何绘制数组的实部和虚部?_Arrays_Fortran_Gfortran - Fatal编程技术网

Arrays 如何绘制数组的实部和虚部?

Arrays 如何绘制数组的实部和虚部?,arrays,fortran,gfortran,Arrays,Fortran,Gfortran,我写了一个程序,计算一个样本的离散傅里叶变换,在这里我对一个正弦波进行采样。为了测试它,我需要绘制结果。但是,结果数组中填充了复杂的值 那么如何提取这些数组元素的实部和虚部,然后根据它们的索引绘制它们呢 这是我的密码: program DFT implicit none integer :: k, N, x, y, j, r, l, istat integer, parameter :: dp = selected_real_kind(15,300) real, allocatable,dime

我写了一个程序,计算一个样本的离散傅里叶变换,在这里我对一个正弦波进行采样。为了测试它,我需要绘制结果。但是,结果数组中填充了复杂的值

那么如何提取这些数组元素的实部和虚部,然后根据它们的索引绘制它们呢

这是我的密码:

program DFT
implicit none
integer :: k, N, x, y, j, r, l, istat
integer, parameter :: dp = selected_real_kind(15,300)
real, allocatable,dimension(:) :: h
complex, allocatable, dimension(:) :: rst
complex, dimension(:,:), allocatable :: W
real(kind=dp) :: pi, z, P, A, i
pi = 3.14159265359
P = 2*pi
A = 1
!open file to write results to
open(unit=100, file="dft.dat", status='replace')

N = 10
!allocate arrays as length N, apart from W (NxN)


allocate(h(N))
allocate(rst(N))
allocate(W(-N/2:N/2,1:N))

pi = 3.14159265359
!loop to fill the sample containing array
do k=1,N
  h(k) = sin((2*k*pi)/N)
end do

!loop to fill the product matrix with values
do j = -N/2,N/2
do k = 1, N

    W(j,k) = EXP((2.0_dp*pi*cmplx(0.0_dp,1.0_dp)*j*k)/N)

end do
end do
!use of matmul command to multiply matrices
rst = matmul(W,h)
!print *, h, w


write(100,*) rst

end program

谢谢。

实数内在函数返回Fortran中复数的实数部分。它也是一个基本函数,因此对于复杂类型的数组,简单实数(array)将返回一个实数数组,其类型与包含所需结果的原始数组的类型相同

AIMAG内在函数返回Fortran中复数的虚部。它也是一个基本函数,因此对于complex类型的数组,simplely AIMAG(array)将返回一个与原始数组类型相同的真实数组,其中包含您想要的结果

或者,在Fortran 2003中,后者%re和%im可分别用于访问复变量的实部和虚部。关于其基本性质的评论再次适用


通过谷歌搜索很容易找到这些,或者更好,我认为每个Fortran程序员至少应该有一份Metcalf、Reid和Cohen的“现代Fortran解释”副本

可能重复的请修复您的类型-它们不是毫无意义的装饰,它们是您计算准确性的基础
%re
%im
在gfortran中仍然不受支持