91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .m
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-10
  • 語言: Matlab
  • 標簽: 心電信號??濾波??

資源簡介

這是用MATLAB編寫的一個用于心電信號濾波去噪,和提取特征值的程序,這個是自己弄的程序,希望對大家有用

資源截圖

代碼片段和文件信息

clc;clear?all;
sig=load(‘ecg101_1.mat‘);%信號
sig=struct2cell(sig);
isig=cell2mat(sig);
t=isig;
t=t‘;

%除低頻
[cl]=wavedec(t5‘db5‘);
d1=wrcoef(‘d‘cl‘db5‘1);
d2=wrcoef(‘d‘cl‘db5‘2);
d3=wrcoef(‘d‘cl‘db5‘3);
d4=wrcoef(‘d‘cl‘db5‘4);
d5=wrcoef(‘d‘cl‘db5‘5);
a5=wrcoef(‘a‘cl‘db5‘5);
x=d1+d2+d3+d4+d5;

%除高頻干擾
[cl]=wavedec(x5‘db5‘);
sigma=wnoisest(cl1);
alpha=1;
thr=wbmpen(clsigmaalpha);
t1=wdencmp(‘gbl‘cl‘db5‘5thr‘s‘1);

%壓縮
[cl]=wavedec(t15‘db5‘);
alpha=1.1;m=l(1);
[thrnkeep]=wdcbm(clalpham);
t1=wdencmp(‘lvd‘cl‘db5‘5thr‘h‘);

%%分層取特征值
[Lo_DHi_D]=orthfilt(‘tbsp‘);???%低通
Lo_D=(1/sqrt(2))*Lo_D;
Hi_D=(1/sqrt(2))*Hi_D;
N=length(t1);
Lo_D=[Lo_Dzeros(1N-length(Lo_D))];%補零(圓周卷積,且增大分辨率便于觀察)
Hi_D=[Hi_Dzeros(1N-length(Hi_D))];%補零(圓周卷積,且增大分辨率便于觀察)
%五層分解
a1=ifft(fft(t1).*fft(Lo_D));%一層低頻
d1=ifft(fft(t1).*fft(Hi_D));%高頻
Lo_D1=dyadup(Lo_D‘c‘);
Hi_D1=dyadup(Hi_D‘c‘);
Lo_D1=Lo_D1(1:N);
Hi_D1=Hi_D1(1:N);
a2=ifft(fft(a1).*fft(Lo_D1));%二層低頻
d2=ifft(fft(a1).*fft(Hi_D1));%高頻
Lo_D2=dyadup(Lo_D1‘c‘);
Hi_D2=dyadup(Hi_D1‘c‘);
Lo_D2=Lo_D2(1:N);
Hi_D2=Hi_D2(1:N);
a3=ifft(fft(a2).*fft(Lo_D2));%三層低頻
d3=ifft(fft(a2).*fft(Hi_D2));%高頻
Lo_D3=dyadup(Lo_D2‘c‘);
Hi_D3=dyadup(Hi_D2‘c‘);
Lo_D3=Lo_D3(1:N);
Hi_D3=Hi_D3(1:N);
a4=ifft(fft(a3).*fft(Lo_D3));%四層低頻
d4=ifft(fft(a3).*fft(Hi_D3));%高頻
Lo_D4=dyadup(Lo_D3‘c‘);
Hi_D4=dyadup(Hi_D3‘c‘);
Lo_D4=Lo_D4(1:N);
Hi_D4=Hi_D4(1:N);
a5=ifft(fft(a4).*fft(Lo_D4));%五層低頻
d5=ifft(fft(a4).*fft(Hi_D4));%高頻

%****************正負極大值對***********************
swd=d3;
points=length(d3);
ddw=zeros(size(swd));
pddw=ddw;
nddw=ddw;
%小波系數的大于0的點
posw=swd.*(swd>0);
%斜率大于0
pdw=((posw(1:points-1)-posw(2:points))<0);
%正極大值點
pddw(2:points-1)=((pdw(1:points-2)-pdw(2:points-1))>0);
%小波系數小于0的點
negw=swd.*(swd<0);
ndw=((negw(1:points-1)-negw(2:points))>0);
%負極大值點
nddw(2:points-1)=((ndw(1:points-2)-ndw(2:points-1))>0);
%或運算
ddw=pddw|nddw;
ddw(1)=1;
ddw(points)=1;
%求出極值點的值其他點置0
wpeak=ddw.*swd;
wpeak(1)=wpeak(1)+1e-10;
wpeak(points)=wpeak(points)+1e-10;
%畫出各尺度下極值點
figure(6)
plot(wpeak);axis?tight;grid?on;
ylabel(strcat(‘j=?‘num2str(i)))
interva2=zeros(1points);
intervaqs=zeros(1points);
Mj4=wpeak;
%畫出尺度3極值點
figure(7)
plot?(Mj4);
title(‘尺度3下小波系數的模極大值點‘);
posi=Mj4.*(Mj4>0);
%求正極大值的平均
thposi=(max(posi(1:round(points/4)))+max(posi(round(points/4):2*round(points/4)))+max(posi(2*round(points/4):3*round(points/4)))+max(posi(3*round(points/4):4*round(points/4))))/4;
posi=(posi>thposi/3);
nega=Mj4.*(Mj4<0);
%求負極大值的平均
thnega=(min(nega(1:round(points/4)))+min(nega(round(points/4):2*round(points/4)))+min(nega(2*round(points/4):3*round(points/4)))+min(nega(3*round(points/4):4*round(points/4))))/4;
nega=-1*(nega%找出非0點
interva=posi+nega;
loca=find(interva);
for?i=1:length(loca)-1
if?abs(loca(i)-loca(i+1))<80
diff(i)=interva(loca(i))-interva(loca(i+1));
else
diff(i)=0;
end
end
%找出極值對
loca2=find(diff==-2)

評論

共有 條評論