矩阵区域和函数

时间:2013-08-07 08:10:40

标签: python python-2.7

我无法理解这段代码。此函数确定矩阵中所选区域的总和。您将获得矩形的左上角(A)和右下角(D)的矩阵和坐标。

    def matrixRegionSum(matrix, A, D):
      if len(matrix) == 0:
        return
      totalSum = 0
      for i in range(A[0], D[0] + 1):
        for j in range (A[1], D[1] + 1):
          totalSum += matrix[i][j]
      return totalSum

我坚持的部分是在range()函数内部。我不确定A [0],B [0],A [1]和B [1]如何访问矩阵。有人能解释一下吗我将A [0]视为数组中的第一个值,但矩阵是2D。有人可以向我解释这个功能背后的逻辑吗?

谢谢你的帮助!非常感谢!

2 个答案:

答案 0 :(得分:2)

  

范围是迭代序列(低,高)的函数   '高'元素。

     

如果你需要迭代一系列数字,内置函数range()会派上用场。它生成包含算术进度的列表,例如:

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5, 10)
>[5, 6, 7, 8, 9]

因此,当你说范围(A [0],D [0] +1)时,下限是A [0],上限本质上是D [0]。所以走向逻辑,简单的数学。

  

区域=积分ydx。


A [0]和D [0]分别是左上角坐标和右下角坐标的x坐标
A [1]和D [1]是y坐标。因此,您正在沿着由(D [1] +1到A [1])表示的条带迭代从D [0] +1到A [0](即dx)的矩阵,其评估为y。


因此,通过将范围A [0]和D [0]中的特定x从D [1] +1循环到A [1],对矩阵(x,j)中的元素求和来计算高度。
并且对于范围(A [0],D [0] +1)中的每个x,将该高度重复加到和。

实际上,您实际上是使用坐标在矩阵中的索引运行,坐标在A [0]到D [0]指定的范围内,对于y,A [1]到D [1]。

  

例如:如果A =(0,6)且D =(3,8),则循环评估为,

for i in range(0,4):
    for j in range(6,9):
         totalSum+=matrix[i][j]

希望这会有所帮助。

答案 1 :(得分:1)

A表示左上角的坐标。 A[0]是X坐标,A[1] Y坐标...

因此,range(A[0], D[0] + 1)循环左边界和右边界之间的所有X值。

Y轴的类似推理。