我發現fscanf有一些困難,並且在python 3.5上做了小波變換2。同樣,我想驗證劇情塊是否正確。 這裏是我的Matlab代碼:將Matlab代碼轉換爲python 3.5+
D_P=fopen('distance_profil.txt','r');
i=0;
while(feof(D_P)==0)% test for end of file
i=i+1;
sign=fscanf(D_P,'%f , ');
classe=fgetl(D_P);
%Wavelet Transform
[caH(i,:),cdH(i,:)] = dwt(sign,'db2');
%Segmentation
loc=[];
[pks,locs] = findpeaks(abs(cdH(i,:)),'threshold',3);
loc=[loc,locs];
mod=abs(cdH(i,:));
figure
titre = ['distance profil : ' classe];
subplot(2,1,1); plot(sign); title(titre);
hold on, plot(2*locs,sign(2*locs),'dr')
subplot(2,1,2); plot(abs(cdH(i,:))); title('Module des Details coef. for db2');
hold on, plot(locs,mod(locs),'dr')
end
而下面是我嘗試用Python代碼
import pywt
import numpy as np
from scipy.signal import find_peaks_cwt
from scipy import *
import matplotlib.pyplot as plt
D_P= open ("distance_profil.txt","r")
i=0
while True:
line = D_P.readline().strip()
if line == '':
def ReadFile():
sign = []
with open('textfiledata.txt', 'rt') as myFile:
for line in myFile:
sign.append(map(int, line.split(',')))
return sign
classe = D_P.readline().rstrip()
cA= np.array(sign)
cD= np.array(sign)
i+=1
array[cA[i,], cD[i,]] = pywt.dwt([sign, 'db2'])
loc = []
[pks,locs] = find_peaks_cwt(abs(cdH([i,]),'threshold',3)
loc = [loc,locs]
mod=abs(cdH[i,])
plt.figure()
plt.subplot(2,2,1)
plt.plot(sign,2*locs,sign(2*locs),'ro')
plt.title('distance profil : ' , classe)
plt.subplot(2,2,2)
plt.plot(abs(cdH(i,)),locs,mod(locs),'ro')
plt.title("Module des Details coef. for db2")
plt.show()
break
那麼你的嘗試呢? –
我們應該如何知道您的代碼是否正確?請閱讀[問]。 –
我對這個指令數組有錯誤[cA [i,],cD [i,]] = pywt.dwt([sign,'db2']) – user7220128