python错误中的specgram

python错误中的specgram,python,matlab,Python,Matlab,我试图在python中运行specgram函数,但出现错误: ValueError:透镜(窗口)必须与所选轴的x形状相同 在Matlab中,当我在specgram或specgram命令中运行相同的精确变量时,效果很好。为什么会这样 这是python代码(x64是一个38022长度的数组,StackOverflow不允许上传,我不知道如何上传): 这个错误有点棘手:如果设置han=np.hanning(len(x64))仍然会得到相同的错误帮助(mlab.specgram)将告诉您*window*

我试图在python中运行
specgram
函数,但出现错误:

ValueError:透镜(窗口)必须与所选轴的x形状相同

在Matlab中,当我在
specgram
specgram
命令中运行相同的精确变量时,效果很好。为什么会这样

这是python代码(
x64
是一个38022长度的数组,StackOverflow不允许上传,我不知道如何上传):


这个错误有点棘手:如果设置
han=np.hanning(len(x64))
仍然会得到相同的错误<代码>帮助(mlab.specgram)将告诉您
*window*:可调用或ndarray--一个函数或长度为*NFFT*
的向量,因此您必须更改所有维度以使其相互适合。另一方面:
如果“window”是一个向量,则spectrogram除以“x”分为与向量长度相同的部分,并使用“窗口”打开每个部分。
hi,那么我如何最好地处理此解决方案?我是否应该采用matlab的方法,将“x”平均划分为与向量长度相同的部分,并使用“窗口”将每个部分划分为窗口?这是否也意味着x64、NFFT=NFFT、Fs=Fs、window=han_norm和novelap都必须具有相同的大小?有没有更简单的方法来解决这个问题?不幸的是,我对这两种语言中的函数都不熟悉:)在我看来,只有
NFFT
window
必须具有相同的大小,这与错误消息相反。如果我不得不猜测:您可能必须使用适当的
NFFT
选项来剪切数据:帮助说明“NFFT:integer——FFT每个块中使用的数据点数。”。它还提到了第一个返回值:“列是连续段的周期图”。所以这应该是有道理的。嗨,我真的很难实现这一点。在这种情况下,你会建议我怎么做?我真的需要让这段代码在python中工作。
from matplotlib import mlab
import numpy as np
nfft = 4096 
fs = 44100 
step = .001
nwind = np.fix (np.multiply([0.002,0.004,0.008,0.016,0.032,0.064],fs))
noverlap = np.round (np.subtract(nwind,(step*fs)) )
han = np.hanning(nwind[5])
han_norm = han * np.sqrt(np.divide(len(han) , np.sum(np.square(han))))
[y64,f64,t64] = mlab.specgram( x64,NFFT=nfft, Fs=fs, window=han_norm, noverlap=noverlap[5],mode='complex')