我有一个2D二进制数据,代表植被图(植被存在,裸土为零)。我想计算这样一个数据的功率谱,我有兴趣获得植被斑块之间的典型距离。我知道这样做的方法是fft或2点自相关函数。
我已阅读此主题并使用它进行了播放 - Power Spectrum and Autocorrelation of Data in Numpy
所以我的数据就是这样的
space = np.random.randint(100, size=(3, 1000))
以这种方式获取这些数据的结果是否正确?
space_ps = np.abs(np.fft.fftn(space))
space_ps *= space_ps
space_ac = np.fft.ifftn(space_ps).real.round()
space_ac /= space_ac[0, 0]
以后我如何将其减少到1D数组,这样我就可以在数据集中找到植被斑块之间某个距离的概率?
用于创建2D二进制数据集的基本代码
import numpy as np
import matplotlib.pyplot as plt
N = int(10)
space = np.zeros((N, N), dtype=np.uint8)
x, y = np.random.randint(N, size=(2, 100))
space[x, y] += 1
plt.ion()
plt.clf()
ext = [0,N,0,N]
im=plt.imshow(space,origin='lower', interpolation='nearest', extent=ext, cmap='Greens')
cbar=plt.colorbar()
title=plt.title('Vegetation patches')
plt.draw()