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 fortran中的方位平均_Arrays_Indexing_Fortran_Where_Radial - Fatal编程技术网

Arrays fortran中的方位平均

Arrays fortran中的方位平均,arrays,indexing,fortran,where,radial,Arrays,Indexing,Fortran,Where,Radial,我正在用fortran处理一个特征值问题。我用拉帕克解了这个问题,得到了特征值和特征向量。这适用于201x101波数,由于对称性,仅为波空间的一半,并且适用于大域(海洋中)中的每个网格点。我正在搜索每个网格点的最大特征值,我不仅要在201x101特征值矩阵中选择绝对最大值,还要在波空间中执行方位平均,然后选择最大平均值。我正在绞尽脑汁想如何做到这一点 起初我是这样编码的: !!波数域 dx=4000. pi = 4.*atan(1.) DO m=1,ktot kx(m) = -(2.*

我正在用fortran处理一个特征值问题。我用拉帕克解了这个问题,得到了特征值和特征向量。这适用于201x101波数,由于对称性,仅为波空间的一半,并且适用于大域(海洋中)中的每个网格点。我正在搜索每个网格点的最大特征值,我不仅要在201x101特征值矩阵中选择绝对最大值,还要在波空间中执行方位平均,然后选择最大平均值。我正在绞尽脑汁想如何做到这一点

起初我是这样编码的:

!!波数域

dx=4000.
pi = 4.*atan(1.)
DO m=1,ktot 
    kx(m) = -(2.*pi)/(dx) + ((m-1)*2.*pi)/(100.*dx)
END DO

DO l=1,ltot
    ly(l)= ((l-1)*2.*pi)/(100.*dx)
END DO
!!径向距离

DO m=1,ktot
DO l=1,ltot
    raddist(m,l)=sqrt(kx(m)**2+ly(l)**2)
END DO
END DO
!!方位平均(omegai是我发现的特征值,一个ktot*ltot大矩阵)


但我似乎是在求y(I)和y(I+1)之间k方向上所有波数的水平块的和。我更需要在波空间中画一个半圆来求中间所有omegai值的和。有人能帮忙吗?提前谢谢

首先,位于环内的晶格点的数量不是半径的简单函数。参见高斯圆问题

其次,Fortran 90的命令与Matlab中的
find
函数类似。它被称为
,其中


希望这有帮助。

我看这里没有编程问题。你对算法有什么问题吗?我建议在编程之前在纸上完成算法。一般来说,使用小写的
l
进行索引不是一个好主意。对于算法,scicomp.stackexchange会更好。谢谢!!小写的L呢?是因为它看起来像数字1,还是会导致实际问题?如果这不是一个好习惯,我无论如何都会改变它我的问题是算法。不同的表述;在Fortran中,有没有其他方法可以在矩阵中找到满足某些条件的索引?Matlab中的find函数可以完成这项工作,但我在Fortran中没有找到等效的内在函数?我的代码不是我所期望的总和,所以我做错了什么。。
DO i=1,ltot-1   
    ind=(raddist(:,i).GE.ly(i).AND.raddist(:,i).LT.ly(i+1))
    length=count(ind)
    WHERE (ind) average_omegai = sum(omegai)/length
END DO