Remove sinc-like spikes from EMG signal

Hi,
I am working on long-term EMG signal and I found that lots of my signal has noises that look like a sinc function. I am wondering whether there are existing methods/functions that can recognize/locate this sinc function. This sinc functions vary in time length and magnitude. The attached picture shows the sinc-like spike. If I can locate them, I can remove them and interpolate the missing data.

 Accepted Answer

I don't know the exact method to do this but I found this while reading a paper on Silent Speech Detection using EMG.
Maybe this would help. Do respond if it does. I might need to do something similar

3 Comments

We perform soft de-spiking to remove very large values by feeding the input through a scaled tanh function (v.tanh x/y) with the maximum scale v set to 1 mV.
Can you provide the reference?
Thanks
It is probably unneccesary to cite a reference if you derives it from first principles using pure math. The raw EMG signal contains high-amplitude transient impulse noise. A lowpass filter can remove these spikes but may introduce a temporal smearing artifact due to the system's impulse response. To isolate and suppress these memoryless amplitude spikes without distorting neighboring time-domain data, a static, non-linear algebraic mapping can be used.
Traditionally, electrical and mechanical engineers use the hard clipper function, which is mathematically defined by:
where L is the lower bound and U is the upper bound of the signal to be clipped. Programmers with a strong logical sense but no formal signal-processing background will almost always reinvent the hard clipper using conditional if-else logic that works like a piecewise function.
for i = 1:N
if emg_raw(i) > U
emg_hard(i) = U; % Positive spike detected -> Clamp to ceiling, U
elseif emg_raw(i) < -U
emg_hard(i) = -U; % Negative spike detected -> Clamp to floor, L = -U
else
emg_hard(i) = emg_raw(i); % Normal signal -> Pass through untouched
end
end
However, modern engineers soon discovered that it introduces a sharp geometric corner at the exact moment the threshold is hit, which is undesirable in some hardware and actuators. Thus, they introduced the soft clipper function:
where a is the saturation scaling factor, establishing the absolute maximum allowable output boundary (), and b is the horizontal threshold parameter, dictating the width of the linear operation zone. The most popular sigmoidal function of all time is the hyperbolic tangent function.
For low-amplitude signals where , the Taylor series expansion yields , ensuring the clean EMG signal passes through almost linearly without distortion. See image below.
% domain
t = linspace(-1, 1, 201);
% EMG signal
x = sinc(10*t);
% soft clipper function
a = 0.125; % amplitude
b = 0.1; % breadth
c = @(x) a*tanh(x/b);
plot(t, [x; c(x); c(t)])
xlabel('Time')
ylabel('Amplitude')
legend('sinc-like impulse', 'de-spiked signal', 'soft clipper function')

Sign in to comment.

More Answers (0)

Asked:

on 10 Aug 2017

Commented:

on 30 Jul 2026

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!