Matlab 频谱图和 matplotlib 频谱图之间的区别?

Difference between Matlab spectrogram and matplotlib specgram?

我正在尝试使用 Matplotlib 将 Matlab 中预先存在的频谱图合并到我的 python 代码中。但是,当我输入 window 值时,出现了一个问题:在 Matlab 中,该值是一个标量,但 Matplotlib 需要一个向量。为什么会这样?

Matlab 中的值是一个标量,因为它表示 window 的大小,而 Matlab 默认使用 Hamming window。 Window 参数也接受向量,所以你可以传入任何你想要的 windowing 函数。

争论的组织方式不同。

在 matplotlib 中,window 大小是使用 NFFT 参数指定的。另一方面,window 参数仅 用于指定 window 本身,而不是大小。因此,与 MATLAB 一样,window 参数接受一个向量。然而,与 MATLAB 不同的是,它还接受一个函数,该函数应采用任意长度的向量和 return 另一个相同大小的向量。这允许您使用函数 windows 而不仅仅是向量。

所以用 MATLAB 术语来说,MATLAB window 参数在 matplotlib 中分为 windowNFFT 参数,而 MATLAB NFFT 参数是相当于 matplotlib pad_to 参数。

至于原因,独立指定 window 和 window 大小允许您使用函数作为 window 的参数(事实上,这是默认值) .这对于 MATLAB 参数是不可能的。

在 Python 中,函数是 first-class 对象,这在 MATLAB 中不是这种情况。因此,与 MATLAB 相比,在 Python 中使用函数作为其他函数的参数往往更为常见。 Python 还允许您按名称指定参数,这是 MATLAB 所不允许的。因此,在 MATLAB 中,根据输入执行不同操作的参数更为常见,而 Python 中的类似函数倾向于将这些参数拆分为多个独立的参数。