資源簡介
利用小波變換對心音信號進行去噪處理,之后利用EMD分解,得到去噪信號的IMF

代碼片段和文件信息
function?imf?=?emd(x)
%?Empiricial?Mode?Decomposition?(Hilbert-Huang?Transform)
%?EMD分解或HHT變換
%?返回值為cell類型,依次為一次IMF、二次IMF、...、最后殘差
x???=?transpose(x(:));
imf?=?[];
while?~ismonotonic(x)
????x1?=?x;
????sd?=?Inf;
????while?(sd?>?0.1)?||?~isimf(x1)
????????s1?=?getspline(x1);?????????%?極大值點樣條曲線
????????s2?=?-getspline(-x1);???????%?極小值點樣條曲線
????????x2?=?x1-(s1+s2)/2;
???????
????????sd?=?sum((x1-x2).^2)/sum(x1.^2);
????????x1?=?x2;
????end
???
????imf{end+1}?=?x1;
????x??????????=?x-x1;
end
imf{end+1}?=?x;
%?是否單調
function?u?=?ismonotonic(x)
u1?=?length(findpeaks(x))*length(findpeaks(-x));
if?u1?>?0
????u?=?0;
else
????u?=?1;
end
%?是否IMF分量
function?u?=?isimf(x)
N??=?length(x);
u1?=?sum(x(1:N-1).*x(2:N)?0);?????????????????????%?過零點的個數
u2?=?length(findpeaks(x))+length(findpeaks(-x));????%?極值點的個數
if?abs(u1-u2)?>?1
????u?=?0;
else
????u?=?1;
end
%?據極大值點構造樣條曲線
function?s?=?getspline(x)
N?=?length(x);
p?=?findpeaks(x);
s?=?spline([0?p?N+1][0?x(p)?0]1:N);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-12-10?15:50??New?Folder\
?????文件??????275962??2012-10-13?11:30??New?Folder\11.wav
?????文件?????????206??2015-11-19?10:33??New?Folder\FFTAnalysis.m
?????文件?????????876??2015-11-28?20:57??New?Folder\Goge1.m
?????文件?????????235??2015-11-19?10:34??New?Folder\HilbertAnalysis.m
?????文件????????1083??2015-11-19?10:33??New?Folder\emd.m
?????文件?????????909??2015-11-19?10:31??New?Folder\findpeaks.m
?????文件????????1688??2015-11-19?10:32??New?Folder\plot_hht.m
?????文件????????3075??2015-11-28?20:30??New?Folder\test.m
?????文件????????1959??2015-11-18?20:15??New?Folder\xinhaochuli.m
評論
共有 條評論