Добавление шума с нешаговым изменением - PullRequest
1 голос
/ 06 ноября 2019

Моя цель - генерировать шумный сигнал ЭКГ. Я хочу, чтобы только более короткие фрагменты сигнала были шумными, поэтому мне нужно осуществлять непрерывные изменения (а не пошаговые изменения!).

Я пробовал интерполяции, но есть проблема, как перейти от нулевого уровня шума к определенному проценту шума, а затем вернуться к нулевому уровню. Реализация будет в Matlab.

У вас есть идеи, как это реализовать? Заранее спасибо!

1 Ответ

0 голосов
/ 06 ноября 2019

У меня нет опыта ЭКГ, но я могу предложить решение:

  • Создать сигнал шага.
  • Сглаживает шаговый сигнал, используя свертку с гауссовским.
  • Создайте «сигнал шума» и умножьте его на сглаженную маску шага.
  • Суммируйте «Сигнал шума» с исходным сигналом.

Вот пример кода:

%Read sample EEG file (MATLAB built in sample).
load('ecgsig.mat');

E = ecgsig(1:end/100); %Take only 1% of data sample

T = zeros(size(E));

%Create an stripe of ones.
T(1+end*3/8:end*5/8) = 1;

%Smooth T - create smooth change by applying gaussian filter.
%T = imgaussfilt(T, 1000);
h = fspecial('gaussian', [1000, 1] ,300);
T = conv(T, h, 'same');

%Build "Noise signal" in size of E - gaussian noise with zero mean (I used image processing toolbox function).
N = imnoise(ones(size(E))*0.5, 'gaussian', 0, 0.1) - 0.5;

%Multiply "Noise signal" by the "smooth transition" mask.
N = N.*T;

%Add the masked "Noise signal" to the original signal.
J = E + N;

figure;plot(J);grid on;

Результат:
enter image description here

...