我有个错误, 名称错误:未定义名称“nmax”。 回溯就像
Traceback (most recent call last):
File "mfcc.py", line 143, in <module>
tmp=get_feature(wavfile,nfft,nceps)
File "mfcc.py", line 135, in get_feature
ceps = mfcc(wavdata,nfft,fs,nceps)
File "mfcc.py", line 97, in mfcc
spec = np.abs(np.fft.fft(signal,nfft))[:nmax]
NameError: name 'nmax' is not defined
我的密码
^{pr2}$我在代码中使用全局变量编写了nmax,因此我不知道为什么会出现此错误。全局变量不能在所有文件中使用,对吗?那么,我该怎么解决这个问题呢?在
问题不在于你使用全局变量本身。问题是当您在
mfcc()
中调用abs()
时,nmax
尚未定义,因为直到稍后在函数中调用melFilterBank()
时才会发生这种情况。将nmax
的定义移到mfcc()
的开头:但是,在当前代码中,我不希望使用
global
,而是显式地传递所需的参数。在在函数
melFilterBanks
中定义nmax
。但在之后调用它,您使用nmax
变量。 所以nmax在你调用它之前不会初始化。在你错在这里了:
因此,要么在使用nmax之前调用melFilterBank,要么在调用melFilterBank之后定义}。在
spec
和{相关问题 更多 >
编程相关推荐