Я пытался реализовать статью под названием «Классификация звуков сердца по несегментированным фонокардиограммам».
это ссылка:
https://www.researchgate.net/publication/316848688_Heart_sound_classification_from_unsegmented_phonocardiograms
но я борюсь с вычислением энтропии вейвлетов, приправленной в статье, как показано на скриншотах.
Это код, который я написал для вычисления пятисекундного сегмента с самой высокой энтропией вейвлета в сигнале PCG, но он дает мне странные значения
Я просто хочу знать, что я делаю неправильно и как рассчитать энтропию вейвлета в этой статье, потому что я уверен, что я не прав.
% Read the .wav signals and store them in cell array.
sounds = dir('*.wav');
num_files = length(sounds);
mydata = cell(1, num_files);
for k = 1:num_files
[mydata{k},Fs] = audioread(sounds(k).name);
end
% Define the variable heighest_e that Carries
% the value of heighest wavelet entropy value of
% five second segment and the filtered signal
% array that carries the filtered 5 secs segments.
heighest_e = 0;
filtered_signal = zeros(num_files,10000);
feature_vector = zeros(num_files,1);
% iterate over all heart sound files one by one.
for i = 1:num_files
signal_cell = mydata(1,i);
signal = cell2mat(signal_cell);
length_signal = length(signal);
iterations = floor(length_signal/2000);
% choose the five second segment with heighest wavelet entropy.
for itr = 1: (iterations - 4)
m = 1;
rec5sec = signal(m : m + 9999,:);
e = wentropy(rec5sec,'shannon');
if e > heighest_e
heighest_e = e;
final_sig = rec5sec;
end
m = m + 1999;
end
filtered_signal(i,:) = final_sig;
feature_vector(i,:) = heighest_e;
end