matlab+信号+mpf,Python和Matlab中平均频率的差异
我有這個(gè)EMG signal,我想根據(jù)這個(gè)article繪制平均功率頻率。我使用以下代碼在Matlab中實(shí)現(xiàn)它:clear all;
close all;
EMG=load('EMG.txt');
N=1000; %my window
z=1;
fs=200 %sampling rate
for i=1:length(EMG)-N
DUM=0;
NUM=0;
FT=fft(EMG(i:i+N-1));
psd=FT.*conj(FT);
NFFT=length(fft2);
f = [1:NFFT/2]*fs/N;
for j=1:NFFT/2
NUM=NUM+f(j)*psd(j);
DUM=DUM+psd(j);
end
MPF(z)=NUM/DUM;
z=z+1;
end
強(qiáng)積金的情節(jié)是:
下面我嘗試在Python中做同樣的事情。代碼是:
^{pr2}$
強(qiáng)積金的地塊是:
為什么不同?在
更新
根據(jù)Dan在評(píng)論部分的建議,我修改了Python代碼如下,結(jié)果大致相同,只是Matlab代碼比Python快得多,在我的例子中,Python內(nèi)存不足:sampling_rate=200
N=1000
MPF=[]
for i in range(0,len(EMG)-N):
signal=EMG[i:(i+N)]
FT=np.fft.fft(signal, axis=0)
psd=FT*np.conj(FT)
NFFT=len(FT)
f =(np.arange(0,NFFT/2)*sampling_rate)/N
D_1=0
N_1=0
for j in np.arange(1,NFFT/2):
D_1=D_1+f[j]*psd[j]
N_1=N_1+psd[j]
MPF.append(D_1/N_1)
plt.plot(MPF)
plt.show()
選擇前22000個(gè)樣本,結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的matlab+信号+mpf,Python和Matlab中平均频率的差异的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java securerandom使用_
- 下一篇: mac地址转换_mac电脑格式转化工具