代码之家  ›  专栏  ›  技术社区  ›  Rotacional

获取矩阵中的方向元素

  •  1
  • Rotacional  · 技术社区  · 10 月前

    假设我的矩阵中有一个感兴趣的点,即NxN。该点位于位置ij。那么,给定索引ij,有没有一种简单的方法可以让线元素通过ij到达原点(位于矩阵的中间)?

    我正在使用torch,我认为使用torch.diag将是第一个开始,但实际上这个函数不会在矩阵的中间通过。

    def directionalK(kx,ky, indices):
        '''Function that provides the K values at a given direction dictated by the indices'''
        kx_grid,ky_grid = torch.meshgrid(kx,kx, indexing='ij')
        k_grid = torch.sqrt(kx_grid**2 + ky_grid**2) 
        k_grid[...,:len(k_grid)//2] *=-1 
        y,x = indices
        diag = x - len(k_grid)//2
    
    1 回复  |  直到 10 月前
        1
  •  1
  •   Warren Weckesser    10 月前

    我想你可以用 skimage.draw.line 方法,您输入开始(i,j)和结束(0,0)坐标,它计算属于可用于索引的线的索引。

    工作示例:

    from skimage.draw import line
    import numpy as np
    import matplotlib.pyplot as plt
    arr = np.zeros((100, 100))
    i, j = 10, 80
    origin = 50, 50
    rr, cc = line(*origin, i, j)
    arr[rr, cc] = 1
    plt.imshow(arr, cmap='gray', interpolation='nearest')
    

    Gray plot showing the line

    或者,如果您希望该行继续:

    arr = np.zeros((100, 100))
    rr, cc = line(i, j, 2*origin[0]-i, 2*origin[1]-j)
    arr[rr, cc] = 2
    plt.imshow(arr, cmap='gray', interpolation='nearest')
    

    Longer line