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 中分为 window
和 NFFT
参数,而 MATLAB NFFT
参数是相当于 matplotlib pad_to
参数。
至于原因,独立指定 window 和 window 大小允许您使用函数作为 window
的参数(事实上,这是默认值) .这对于 MATLAB 参数是不可能的。
在 Python 中,函数是 first-class 对象,这在 MATLAB 中不是这种情况。因此,与 MATLAB 相比,在 Python 中使用函数作为其他函数的参数往往更为常见。 Python 还允许您按名称指定参数,这是 MATLAB 所不允许的。因此,在 MATLAB 中,根据输入执行不同操作的参数更为常见,而 Python 中的类似函数倾向于将这些参数拆分为多个独立的参数。
我正在尝试使用 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 中分为 window
和 NFFT
参数,而 MATLAB NFFT
参数是相当于 matplotlib pad_to
参数。
至于原因,独立指定 window 和 window 大小允许您使用函数作为 window
的参数(事实上,这是默认值) .这对于 MATLAB 参数是不可能的。
在 Python 中,函数是 first-class 对象,这在 MATLAB 中不是这种情况。因此,与 MATLAB 相比,在 Python 中使用函数作为其他函数的参数往往更为常见。 Python 还允许您按名称指定参数,这是 MATLAB 所不允许的。因此,在 MATLAB 中,根据输入执行不同操作的参数更为常见,而 Python 中的类似函数倾向于将这些参数拆分为多个独立的参数。