How to proper filter an EMG?

How can I plot the signal from the file "sigtest230504.mat" in MATLAB with a sampling frequency of 1000Hz and identify any artifacts present in the signal? Once artifacts are detected, please suggest appropriate filtering techniques to remove them.
Furthermore, what physiological information can be extracted from the estimated spectrum, and what parameters are associated with this information? Please calculate at least one parameter in the frequency domain, explain its physiological significance, and provide commentary on the numerical value obtained.
THANK YOU VERY MUCH FOR THE HELP

9 Comments

I have no idea what sort of ‘parameters’ you want to derive.
Any possible parameters in a emg signal. and to filter that signal.
The idea of a ‘parameter’ implies some sort of model or at least criteria (such as power at a specific frequency or band of frequencies). There could be several to choose from, depending on how you want to analyse the data.
Yeah, but these were the only information I had. It is possible to estimate something? Like I don't know the burst of the muscle?
It depends on what these represent (surface or intramuscular EMG), normal or pathological, and other characteristics. There is nothing in these signals to suggest a specific approach to analysing them.
LD = load('sigtest230504.mat');
s = LD.sig;
L = numel(s)
L = 8000
Fs = 1E+3;
Fn = Fs/2;
t = linspace(0, L-1, L)/Fs;
figure
plot(t, s)
grid
xlabel('Time')
ylabel('Amplitude')
figure
plot(t, s)
grid
xlabel('Time')
ylabel('Amplitude')
xlim([0 0.25])
.
Is a surface emg that's all I know. What information can I extract knowing this?
That is difficult to determine, since the purpose of getting the EMG is to derive specific information from it, and that information depends on the clinical indication for it or the experimental design.
In the absence of any other infomration, one way to explore it is with a spectrogram plot —
LD = load('sigtest230504.mat');
s = LD.sig;
L = numel(s)
L = 8000
Fs = 1E+3;
Fn = Fs/2;
t = linspace(0, L-1, L)/Fs;
figure
pspectrum(s, Fs, 'spectrogram')
colormap(turbo)
[sp,fp,tp] = pspectrum(s, Fs, 'spectrogram');
figure
waterfall(fp,tp,sp')
set(gca,XDir="reverse",View=[60 60])
ylabel("Time (s)")
xlabel("Frequency (Hz)")
zlabel("Magnitude (mV ?)")
colormap(turbo)
colorbar
xlim([0 500])
[az,el] = view;
view(-45, 45)
Unfortunately, this does not provide much information. It demonstrates fatigue (decrease in the higher frequencies with respect to time), however not much else.
.
The color map of the 2d spectrogram and the 3d ones what can they indicate? Like what I have to search for if I have another biopotential signal?
The 'spectrogram' plot pspectrum calculates and plots express the power (in decibels) of the signal at each frequency and time.
The waterfall plot indicate the magnitudes (not power, which would be magnitude²) at each frequency and time.
A different biopotential signal would likely have different time-frequency chartacteristics, so that depends on the signal and the context of what you are searching for.

Sign in to comment.

Answers (0)

Products

Release

R2021a

Asked:

on 10 Jun 2023

Commented:

on 15 Jun 2023

Community Treasure Hunt

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

Start Hunting!