exponenta event banner

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

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

Создайте один период сигнала ЭКГ. ecg функция создает сигнал ЭКГ длиной 500. 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';

Проектирование фильтра нижних частот минимального порядка с частотой края полосы пропускания 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);

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

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)

См. также

Функции

Объекты

Связанные темы