Python矩阵除法

时间:2018-12-03 18:28:33

标签: python python-3.x matrix rounding division

我有一个关于按元素划分矩阵的问题,这意味着我想让第一个矩阵的元素[i,j](foto_dcp,请参见代码)被第二个矩阵的元素[i,j]划分(问)。

一些背景信息:我从存储设备中加载了一张图片。我将每个像素的单色值存储在称为“ pixelMatrix”的矩阵中 该命令将128x128的大矩阵变成8x8的小矩阵

foto_dct = skimage.util.view_as_blocks(pixelMatrix, block_shape=(8, 8))

现在,执行完此操作后,我需要按元素方式将foto_dct中的每个矩阵除以一个不同的矩阵(在此代码中称为“ Q”)。

for x in foto_dct:
   for i in range(8):
      for j in range(8):
          x[i,j] = x[i,j] / Q[i,j]

问题是我得到的结果不正确。这是矩阵“ Q”:

[[ 16  11  10  16  24  40  51  61]
 [ 12  12  14  19  26  58  60  55]
 [ 14  13  16  24  40  57  69  56]
 [ 14  17  22  29  51  87  80  62]
 [ 18  22  37  56  68 109 103  77]
 [ 24  35  55  64  81 104 113  92]
 [ 49  64  78  87 103 121 120 101]
 [ 72  92  95  98 112 100 103  99]]

这是一个示例矩阵(foto_dct [3,3],尽管我已经对矩阵进行了一些操作,矩阵的第三列,矩阵的第三行,如果您还记得第1步的话)。

[[613 250 -86  64 -63  59 -44  24]
 [ 38 -84  50 -57  54 -47  35 -19]
 [-16   4  -4   7  -5   4  -3   1]
 [ 10 -18  19 -20  21 -20  16  -9]
 [-17  19 -18  16 -14  11  -7   4]
 [ -7   9 -10  12 -13  11  -9   5]
 [-11  15 -14  15 -14  11  -9   5]
 [ -1   2  -4   5  -5   4  -3   2]]

这是我除法后的结果:

[[43 17 -6  4 -4  4 -3  1]
 [ 2 -4  2 -3  3 -2  2 -1]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]]

如您所见,例如取元素[0,0] = 613,因此除法后,我们应该得到[0,0] = 613/16 = 38.3125(如您所见,它也会自动舍入吗?) 顺便说一句,我试图改变

x[i,j] = x[i,j] / Q[i,j]

作者

x[i,j] = x[i,j] / 2

并获得正确的(尽管四舍五入)结果。所以Q [i,j]


我也尝试过这种方式:

for x in foto_dct:
    x = np.divide(x,Q)

但这会返回我原始矩阵,不做任何事情,甚至不会返回错误代码,尽管它应该按元素划分。 有人可以帮我吗?

0 个答案:

没有答案