Python计算ONE Array的PSD和CSD

时间:2015-07-21 06:11:32

标签: matlab signal-processing spectral-density mlab

我的信号分析遇到了一些问题。我在脚本(x)中加载一个数组,形状为x(68,815)。 68表示阵列中的信号数。所以我想在它上面执行PSD和CSD。 CSD:x [0],x [1] .... x [0],x [67],随后......      x [1] x [1] .... x [1],x [67],等等

但不知何故,计算出的数值符合我的预期,在进一步的计算中使用它们会导致令人不安的结果。 谁能找到我的错误?我完全迷失了。无法看到森林中的树。

x = np.load('/home/daniel/Dropbox/[...]')

nfft = 512
n_freqs = nfft/2+1
n_epochs = len(x) # in this case there are 68 channels, does not want to change the variable name
sfreq = 1000

def compute_mean_psd_csd(x, n_epochs, nfft, sfreq):
    '''Computes mean of PSD and CSD for signals.'''

    Rxy = np.zeros((n_epochs, n_epochs, n_freqs), dtype=complex)
    Rxx = np.zeros((n_epochs, n_epochs, n_freqs), dtype=complex)
    Ryy = np.zeros((n_epochs, n_epochs, n_freqs), dtype=complex)
    for i in range(n_epochs):
        for j in range(n_epochs):
            Rxy[i,j], freqs = mlab.csd(x[i], x[j], NFFT=nfft, Fs=sfreq)
            Rxx[i,j], _____ = mlab.psd(x[i], NFFT=nfft, Fs=sfreq)
            Ryy[i,j], _____ = mlab.psd(x[i], NFFT=nfft, Fs=sfreq)

0 个答案:

没有答案