fscanf에서 약간의 어려움을 발견하고 파이썬 3.5에서 웨이블릿 변환 순서 2를 수행합니다. 또한, 플롯 블록이 올바른지 확인하고 싶습니다. 여기 내 MATLAB 코드입니다 :Matlab 코드를 파이썬 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
그리고 아래의 두 가지 문제는 파이썬 코드를 많이에서 MATLAB 코드로 같은 일을하고 있지 않은지 있습니다
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
그럼 시도는 어떻습니까? –
코드가 맞는지 어떻게 알 수 있습니까? [ask]를 읽으십시오. –
이 명령어 배열에 오류가 있습니다. [cA [i,], cD [i,]] = pywt.dwt ([sign, 'db2']) – user7220128