在maltlab和pythonmatplotlib.mlab中包含为了与具有相同名称的MATLAB命令兼容而编写的Numerical python函数.
但对我来说,我在MATLAB和python中获得了不同的结果.有谁有任何想法,为什么会这样?
MATLAB mscohere函数有一个参数WINDOW来设置窗口的大小,我找不到matplotlib.mlab中的cohere函数(python)
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
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
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 …Run Code Online (Sandbox Code Playgroud)