嗨,我想对二维正方形数组求和。假设为所有点i,j
定义了数组sum(F)
。我可以只用DO
来求和整个数组,但是我想从一个小正方形开始,然后到最大数组进行求和,这需要一个F(i,j)
循环。如果要单调乏味地写出逻辑,我想对数组DO i = -1,1
DO j = -1,1
value1 = sum(F)
END DO
END DO
DO i = -2,2
DO j = -2,2
value2 = sum(F)
END DO
END DO
DO i = -3,3
DO j = -3,3
value3 = sum(F)
END DO
END DO
进行如下求和:
i=-30,30, j=-30,30
并继续进行到DO
。我试图在一个DO i = -30,30
DO j = -30,30
value4 = sum(F(i:i+1,j:j+1))
END DO
END DO
循环中通过
[HttpGet("admin/AllQuarterEventByMap/{map}")]
public IActionResult AllQuarterEventByMap([fromRoute] string map)
{
return View(_staffMethods.GetQuarterEventsByMap(map));
}
但这给了我错误的结果。如何解决此问题,以便可以在单个do循环中全部实现?谢谢。
答案 0 :(得分:3)
如果我正在解密您要尝试的操作,那么您有一个二维数组,其二维范围的自定义范围从-30到30?然后,您要从此中心的3x3矩阵开始,求和。然后将其放大到5x5并求和。继续直到获得整个矩阵的和。
那么您将有30笔款项。是的,您可以在一个do循环中执行此操作。将答案放入一维数组Sums(30)看起来像这样:
do i = 1, 30
Sums(i) = Sum(F(-i:i,-i:i))
end do
F中的索引符号表示出增长的平方矩阵以馈入Sum函数。