我有一个代码,必须计算心理信号的平均归一化香农能量,但计算标准偏差有问题。我的代码在这个表达式之上可能有问题。有些人可以帮助我。请。
function segmentation_Shennon
close all
clear all
% Загружаем файл с данными
[F,Fs] = audioread('1.wav');
pcg = F(:,2);
t=0:1/Fs:(length(F)-1)/Fs;
%% Нормируем и фильтруем сигнал фильтром Чебышева 1 8го порядка НЧ с частотой среда 882 Гц
pcg_filter = chebushev1(pcg,Fs);
pcg_norm = pcg_filter./abs(max(pcg_filter));
%рассчитываем энергию Шеннона
shennon_energy= -((pcg_norm.^2).*log(pcg_norm.^2));
figure(1)
plot(t,shennon_energy)
%рассчитываем усредненную энергию Шеннона в сегменте длительностью 0,02с
%с перекрытием 0.01 с
win=0.002*Fs;
i=1;
k=1;
Es=[];
Es_t=[];
P=[];
while i<length(pcg_norm)
for i=i:i+win
square = pcg_norm(i).^2;
Es(k) = -1/win * sum( square .* log(square));
end
ES_t(k)=t(i);
i=i+round(win/2);
k=k+1;
end
% нормируем усреднeнyую энергию Шеннона
M_Es = (mean(Es)); %среднее значение энергии сегмента
S_Es = (std(Es(k-1))); %стандартное отклонение энергии сегмента
P(k) = (Es(k-1)-M_Es)/S_Es; % Нормированная усредненная энергия Шеннона,
plot(t,P)