Python上2D二进制数据的功率谱

时间:2015-01-27 08:31:53

标签: python numpy fft correlation

我有一个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()

0 个答案:

没有答案