【发布时间】:2015-08-05 10:16:51
【问题描述】:
在 maltlab 和 pythonmatplotlib.mlab 中包含为与具有相同名称的 MATLAB 命令兼容而编写的数值 python 函数。
但对我来说,我在 MATLAB 和 python 中得到了不同的结果。有谁知道,为什么会这样?
-
MATLAB mscohere 函数有一个参数 WINDOW 来设置窗口的大小,我在 matplotlib.mlab (python) 中找不到 cohere 函数
Cxy = mscohere(y1,y2,16,0,16)
Cxy = matplotlib.pyplot.cohere(y1, y2,NFFT=16,noverlap=0)
其中 y1 和 y2 在 MATLAB 和 python 中相同,长度为 1024
有什么帮助吗?
代码如下:
MATLAB:
Fs=8000;
y1=zeros(1,1024);
y2=zeros(1,1024);
for f =0:100:1900
for n=0:1023
y1(n+1)=y1(n+1)+sin(2*pi*f*n/Fs);
if mod(f,200)==0
y2(n+1)=y2(n+1)+sin(2*pi*f*n/Fs);
end
end
end
Cxy = mscohere(y1,y2,16,0,16);
display(Cxy);
Cxy =
0.8300
0.0504
0.0006
0.0082
0.1828
0.2562
0.7984
0.9788
0.9884
Python:
Fs=8000
sample=1024
frequencys=100 * np.arange(20)
#print(frequencys)
y1=np.zeros(sample)
y2=np.zeros(sample)
for f in range(frequencys.size):
for n in range(sample):
y1[n]=y1[n]+sin(2*pi*frequencys[f]*n/Fs)
if frequencys[f]%200==0:
y2[n]=y2[n]+sin(2*pi*frequencys[f]*n/Fs)
cxy,f = plt.cohere(y1, y2,NFFT=16,noverlap=0)
print(cxy)
Cxy=[ 0.78894285
0.06083255
0.01161213
0.00249976
0.14194519
0.38694284
0.78120729
0.8384586
0.85438165]
【问题讨论】:
-
注意:这个问题很快就会结束,因为:“寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误和在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。 Check this link 了解如何改进问题并获得一些好的答案。
-
您需要提供能够完全重现问题的示例代码,以及真实输出和预期输出。不知道 y1 和 y2 是什么,也不知道 MATLAB 和 Python 为您提供了 Cxy 什么,我们无法为您提供帮助。
-
matplotlib.mlab.cohere 和 matplotlib.pyplot.cohere 都有一个参数
window。 -
@StewieGriffin 对不起。添加实际代码
-
@A.Donda pyplot中的窗口参数只是设置窗口类型。不是窗口的大小
标签: python matlab matplotlib