Удаление высокочастотного шума из сигнала ЭКГ

Этот пример показывает, как lowpass фильтровать сигнал ЭКГ, который содержит шум высокой частоты.

Создайте один период сигнала ЭКГ. The ecg функция создает сигнал ЭКГ длины 500. The sgolayfilt функция сглаживает сигнал ЭКГ, используя фильтр сглаживания Савицкого-Голея (полином).

x = ecg(500).';
y = sgolayfilt(x,0,5);
[M,N] = size(y);

Инициализируйте временные возможности, чтобы просмотреть сигнал с шумом и отфильтрованный сигнал.

Fs = 1000;
TS = timescope('SampleRate',Fs,...
                    'TimeSpanSource','Property',...
                    'TimeSpan',1.5,...
                    'ShowGrid',true,...
                    'NumInputPorts',2,...
                    'LayoutDimensions',[2 1]);
TS.ActiveDisplay = 1;
TS.YLimits = [-1,1];
TS.Title = 'Noisy Signal';
TS.ActiveDisplay = 2;
TS.YLimits = [-1,1];
TS.Title = 'Filtered Signal';

Проектируйте lowpass минимального порядка с частотой ребра полосы пропускания 200 Гц и частотой ребра стоповой полосы 400 Гц. Желаемая амплитуда частотной характеристики и веса заданы в A и D векторы, соответственно. Передайте эти векторы спецификации в firgr функция для разработки коэффициентов фильтра. Передайте эти разработанные коэффициенты в dsp.FIRFilter объект.

Fpass  = 200;
Fstop = 400;
Dpass = 0.05;
Dstop = 0.0001;
F     = [0 Fpass Fstop Fs/2]/(Fs/2);
A     = [1 1 0 0];
D     = [Dpass Dstop];
b = firgr('minorder',F,A,D);
LP = dsp.FIRFilter('Numerator',b);

Проектируйте высокочастотный фильтр минимального порядка с частотой ребер стоповой полосы 200 Гц и частотой ребер полосы пропускания 400 Гц. Проектируйте фильтр с помощью firgr функция. Передайте эти разработанные коэффициенты в dsp.FIRFilter объект.

Fstop = 200;
Fpass = 400;
Dstop = 0.0001;
Dpass = 0.05;
F = [0 Fstop Fpass Fs/2]/(Fs/2); % Frequency vector
A = [0 0 1 1]; % Amplitude vector
D = [Dstop Dpass];   % Deviation (ripple) vector
b  = firgr('minord',F,A,D);
HP = dsp.FIRFilter('Numerator',b);

Этот сигнал с шумом содержит сглаженный сигнал ЭКГ вместе с высокой частотой шумом. Сигнал фильтруется с помощью lowpass. Просмотрите сигнал с шумом и отфильтрованный сигнал, используя временные возможности.

tic;
while toc < 30
    x = .1 * randn(M,N);
    highFreqNoise = HP(x);
    noisySignal = y + highFreqNoise;
    filteredSignal = LP(noisySignal);
    TS(noisySignal,filteredSignal);
end

% Finalize
release(TS)

См. также

Функции

Объекты

Похожие темы