⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgomedwmedfilt.m

📁 是一本教科书的各个章节的源程序代码,适合初学数字图像的人
💻 M
字号:
function SgoMedWmedFilt();
%   SgoMedWmedFilt函数用来比较sgolayfilt、medfilt1和Wmedfilt1 
%   三种滤波函数在滤除心电图噪声时的效果
%   该函数显示了五种图像:原始没有噪声的心电图、加有噪声的心电图和经三种滤波    
%   后得到的心电图                                           
%   噪声大小和滤波器参数由输入决定 
DEGREE = input('请输入sgolayfilt 滤波器的阶数:');
FRAME = input('请输入sgolayfilt 滤波器窗口的宽度:');

N=input('请输入medfilt1滤波器窗口的宽度:');
M_BLA=input('请输入medfilt1滤波器参数BLKSZ :');

W=input('请输入wmedfilt1滤波器的加权参数:')
WM_BLA=input('请输入wmedfilt1滤波器参数BLKSZ :');

NOISE=input('请输入心电图所加噪声参数:');

x1 = ecg(500);
x = [x1 x1 x1 x1 x1 x1];
y =x'; 
%无噪声心电图
% 利用ecg子函数产生了心电图数据

s=add_noise(y,NOISE);
%对心电图加入噪声

sgo_signal=sgolayfilt(s,DEGREE,FRAME);
%利用sgolayfilt函数进行滤波

m_signal=medfilt1(s, N, M_BLA);
%利用medfilt1函数进行滤波

wm_signal=wmedfilt1(s, W, WM_BLA);
%利用wmedfilt1函数进行滤波

subplot(5,1,1); 
plot(y);
title('(a)');

subplot(5,1,2); 
plot(s);
title('(b)');

subplot(5,1,3); 
plot(sgo_signal);
title('(c)');

subplot(5,1,4); 
plot(m_signal);
title('(d)');

subplot(5,1,5); 
plot(wm_signal);
title('(e)');

function s = add_noise(y,NOISE)
v = 0.05*NOISE*randn(3000,1);    
s = y + v;         
% 加噪子函数

function x = ecg(L)

a0 = [0,1,40,1,0,-34,118,-99,0,2,21,2,0,0,0];               
d0 = [0,27,59,91,131,141,163,185,195,275,307,339,357,390,440];
a = a0 / max(a0);
d = round(d0 * L / d0(15));           
d(15)=L;
for i=1:14,
       m = d(i) : d(i+1) - 1;
       slope = (a(i+1) - a(i)) / (d(i+1) - d(i));
       x(m+1) = a(i) + slope * (m - d(i));
end
%心电图发生子函数



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -