資源簡介
matlab 基于雙門限的端點檢測
小波分解,提取高頻系數(shù),計算能量,然后設(shè)定雙閾值實現(xiàn)檢測
代碼片段和文件信息
clc;close?all;clear?all;
signal=wavread(‘G:\abonrmalsounddetect\VOICE003.wav‘);
%signal1=flipud(signal);
framelen=2048;framewap=1024;
temp=enframe(signalframelenframewap);???????????%信號分幀
framelen1=512;framewap1=8;
point=size(temp);
for?i=1:point(1)
????[cl]=wavedec(temp(i1:2048)3‘db6‘);????????%小波變換
????coefficent=c(1051:2079);??????????????????????%高頻系數(shù)提取
????
????energywav(i)=sum(abs(coefficent)2);??????????%直接由小波系數(shù)計算能量--1
????
????temp1=enframe(coefficentframelen1framewap1);%二次分幀求取平均能量--2
????for?j=1:size(temp1)
?????????energy(j)=sum(abs(temp1(j))2);??????????%2的分能量,3的能量
%?????????energy(j)=abs(temp1(j));
????end
????energycoe(i)=mean(energy);????????????????????
????temp2=enframe(coefficentframelen164);???????%二次分幀求取平均能量--3
????for?j=1:size(temp2)
????????energy(j)=sum(abs(temp2(j))2);???????????%3的能量
%???????????energy(j)=abs(temp2(j));?
????end
????energyfra(i)=mean(energy);??
????for?n=1:size(temp2)???????????????????????????%3--異常檢測
????????
????????if?energy(n)-energyfra(i)>energy(n)*0.7?
????????????resultfra(i)=1;
????????else?resultfra(i)=0;
????????end
????end
end
%?energymean=medfilt1(energymean3);
for?i=1:point(1)-1
????throsholdcoe(i)=0;throsholdwav(i)=0;
????if?i>2
????????throsholdwav(i)=1.15*(energywav
評論
共有 條評論