Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matlab频谱图和matplotlib频谱图之间的差异?_Python_Matlab_Matplotlib_Spectrogram - Fatal编程技术网

Python Matlab频谱图和matplotlib频谱图之间的差异?

Python Matlab频谱图和matplotlib频谱图之间的差异?,python,matlab,matplotlib,spectrogram,Python,Matlab,Matplotlib,Spectrogram,我正试图使用Matplotlib将一个来自Matlab的预先存在的频谱图合并到我的python代码中。但是,当我输入窗口值时,有一个问题:在Matlab中,该值是标量,但Matplotlib需要一个向量。为什么会这样?Matlab中的值是一个标量,因为它表示窗口的大小,默认情况下,Matlab使用汉明窗口。Window参数还接受向量,因此您可以传入任何所需的窗口函数。参数的组织方式不同 在matplotlib中,使用NFFT参数指定窗口大小。另一方面,window参数仅用于指定窗口本身,而不是大

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

Matlab中的值是一个标量,因为它表示窗口的大小,默认情况下,Matlab使用汉明窗口。Window参数还接受向量,因此您可以传入任何所需的窗口函数。

参数的组织方式不同

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

因此,用MATLAB术语来说,MATLAB
window
参数在matplotlib中被分为
window
NFFT
参数,而MATLAB
NFFT
参数相当于matplotlib
pad_to
参数

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


在Python中,函数是一级对象,而在MATLAB中则不是这样。因此,与MATLAB相比,在Python中使用函数作为其他函数的参数更为常见。Python还允许您按名称指定参数,而MATLAB确实不这样做。因此,在MATLAB中,更常见的情况是参数根据输入执行不同的操作,而Python中类似的函数往往会将这些参数拆分为多个独立的参数。

您必须将标量值按数组转换为向量。Numpy可以帮助您解决问题有没有办法在matplotlib中指定窗口大小?@JoeBernstein:正如我在回答中所说,使用
NFFT
参数。@JoeBernstein,是的,正如@TheBlackCat所说,您可以使用
NFFT
参数。另外,
matplotlib
使用默认的Hann窗口,因此不向此参数传递任何内容将导致在分析之前将数据与Hann窗口相乘。如果你想改变这一点,你可以使用内置函数来创建与你输入数据大小相同的窗口。查看此处了解更多信息:Fs是否相关?我注意到matplotlib上的Fs也会影响x轴(将我的Fs设置为2^-1或2^-10不会更改图像,只会更改两个比例)
Fs
是采样频率,它决定了时间点和频率的间隔。如果MATLAB版本中的Fs没有同时改变X(时间)和Y(频率)轴,我会感到惊讶。我如何放大较低的频率,并删掉较高的频率?你可以只改变Y限制。不要太密集,但我该怎么做?