Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

Biomedical Signal Processing and Analysing [MTE XXXXXXXXXX] 1 INTRODUCTION Biomechanics of the upper limb includes the study of muscle strength and range of motion in the joints. Muscle strength in...

1 answer below »
Biomedical Signal Processing and Analysing [MTE XXXXXXXXXX]


1

INTRODUCTION
Biomechanics of the upper limb includes the study of muscle strength and range of motion in the
joints. Muscle strength in the arms can be measured via a mechanical or an electrical instrument.
Electrical instruments such as surface electromyography (EMG) can be used to measure muscle
activation (in millivoltage). The change in the amplitude of EMG signals can indicate how muscle
activation changes during a different range of motions. For example, during elbow flexion, the elbow
angle, measured using a goniometer, increases and the activation of the anterior arm muscles (biceps
muscle) increases. Similarly, during elbow extension, the elbow angle decreases while activation of
triceps
achii increases (or biceps decreases).
In populations with neurological disorder such as multiple sclerosis, fatigue is one of the disabling
features and fatigue causes the impaired individual to put significantly more intense effort toward
achieving activity of daily living tasks. Therefore, it is important to understand when and what can
cause fatigue when functioning the arms. For this assignment, a healthy participant was tested for
fatigue in their triceps and biceps. To do this, the participant was asked to flex their elbow and
voluntarily contract their arm muscles while biceps and triceps were monitored using a surface EMG
device.
In this assignment you are required to provide a structured report to showcase your understanding
of the given data below. You are required to analyse the given data using MATLAB. Detailed
information and requirement of the data analysis are given below. The terminologies you might come
across in this assignment are:
Maximum voluntary contraction (MVC): is a standardised method for measuring muscle strength
using mechanical or electronic instrument. In this assignment, surface EMG is used to measure MVC
values. It is common practice to use the maximum value or the peak amplitude of the EMG data to
normalise readings across different trials and devices.
Linear envelope: is a combination of rectifying and applying a low pass filter to a signal. This process
is important to eliminate artefacts or noise in EMG data. Once i
elevant signals are eliminated
thorough this process, we can better observe patterns in the data and discover abnormal behaviour
of the monitored muscles.
Biomedical Signal Processing and Analysing [MTE XXXXXXXXXX]


2

DATA FILES
All data files are saved as .mat files:
1. Maximum voluntary contractions (Maximum_Voluntary_Control.mat) containing four columns:
• Column 1 is EMG1 data in mV with 22980 values.
• Column 2 is EMG2 data in mV with 22980 values.
• Column 3 is goniometer data in degrees with 1149 values. Data extrapolated from 50 to
1000 samples per second.
• Column 4 is mass in kg (values equivalent to force level exerted by the arm) with 2298
values. Data extrapolated from 100 to 1000 samples per second.
2. Repeated flexion and extension of an arm (Repeated_Flexion_Extension.mat): This mat file
contains
• Column 1 is EMG1 data in mV with 9260 values.
• Column 2 is EMG2 data in mV with 9260 values.
• Column 3 is goniometer data in degrees with 463 values. Data extrapolated from 50 to
1000 samples per second.
• Column 4 is mass in kg (values equivalent to force level exerted by the arm) with 926
values. Data extrapolated from 100 to 1000 samples per second.
3. Arm fatigue trial (Fatigue_Trial.mat)
• Column 1 is EMG1 data in mV with XXXXXXXXXXvalues.
• Column 2 is EMG2 data in mV with XXXXXXXXXXvalues.
• Column 3 is goniometer data in degrees with 8144 values. Data extrapolated from 50 to
1000 samples per second.
• Column 4 is mass in kg (values equivalent to force level exerted by the arm) with 16288
values. Data extrapolated from 100 to 1000 samples per second.
Biomedical Signal Processing and Analysing [MTE XXXXXXXXXX]


3

SETUP GUIDANCE
From each data file you need two EMG signals (“emg1” and “emg2”) and the goniometer signal. You
will need to convert the goniometer signal to elbow flexion/extension angle, where ~0 degrees
co
esponds to full elbow extension and ~120 degrees co
esponds to full elbow flexion. All signals
were sampled at 1000 Hz.
Maximum voluntary contractions (MVC) value can be used to normalise EMG signals. The
normalisation procedure should allow for comparisons between different EMG signals. Therefore,
your first step should be to load the file with the MVC value and calculate the envelopes of emg1_mvc
and emg2_mvc, and find the maximum value of each envelope. To normalize the EMG envelopes in
the other trials, divide the flexion-extension EMG envelopes by the maximum values from the MVC
envelopes.
QUESTION 1:
A. Normalise the Repeated_Flexion_Extension and Fatigue_Trial signals. Then use appropriate
filters to cut off the artefacts before determining the linear signal envelope (rectified and
filtered data). To do this, you will first need to perform a Fast Fourier transformation, and
shift (offset) the data to the zero centreline. Subsequently, use the frequency domain EMG
data to identify any artefact and assist you in finding an appropriate cut off frequency. Apply
the cut off frequency in a filter (the recommended filter for this assignment is Butterworth
4th order – however you need to comment on why this is an appropriate filter) to finally
produce the linear envelop.
B. For each signal, in a plot with 3 subplots show a comparison of a (i) the raw signal, (ii) the full
wave rectified and filtered signal, and (iii) the linear envelope.
QUESTION 2:
A. Divide the Repeated_Flexion_Extension signal into active zones (regions where muscle
activation occurs).
B. Compute the spectrogram (a visual representation of how frequencies change with time –
watch the first 10 minutes of this video) of each active zone, and then extract the dominant
frequency (frequency associated with the maximum power) and the median frequency of the
https:
uk.mathworks.com/videos/signal-processing-with-matlab-88866.html
Biomedical Signal Processing and Analysing [MTE XXXXXXXXXX]


4

signal spectrum (the point in the frequency spectrum that divides it into two parts of equal
power).
C. Make a new set of subplots showing one active area per subplot and their spectrum marking
these frequencies on the plot. The median frequency obtained as a function of time will
effectively describe the shift in EMG frequency throughout a certain task.
QUESTION 3:
A. Identify which EMG signal was recorded from each muscle, by comparing the timing of the
EMG activity with the resulting elbow angle. Make a figure with two subplots to compare the
timing of the signals, one subplot showing the normalized linear envelope of “emg1” and
"emg2" versus time, and the second showing the elbow angle versus time.
B. Write a few lines to explain which EMG signal (“emg1” or “emg2”) was recorded from the
iceps, and which from the triceps.
QUESTION 4:
A. Use the Fatigue_Trial to analyse fatigue; extract 3 signals of 20 second lengths starting at 40,
80 and 120 seconds.
B. Compute and plot the spectrum (change in frequency with time) of the three signals above.
Compare the three signals and analyse and explain the fatigue progress. To do this you could
study the variation of the muscles median signal frequency whilst the participant was
performing the tasks. Remember during an isometric contraction, a change in amplitude and
a shift of the EMG power frequency spectrum would represent fatigue. To complete this
question, you may find further reading helpful, for example the paper by Potvin 1997 in the
Journal of Applied Physiology.
QUESTION 5:
Write your entire report in a MATLAB script, and publish it into a pdf. Remember to include
comments throughout your report, explaining your code clearly. Ensure to also include any additional
comments relating to your observation of the data. You should submit your report as a pdf.
https:
journals.physiology.org/doi/full/10.1152/jappl XXXXXXXXXX?utm_source=TrendMD&utm_medium=cpc&utm_campaign=Journal_of_Applied_Physiology_TrendMD_0&

Maximum_Voluntary_Control:[22980x4 double a
ay]

Repeated_Flexion_Extension:[9260x4 double a
ay]

Fatigue_Trial:[162880x4 double a
ay]
Answered 2 days After Jun 05, 2021

Solution

Hanumantha Rao answered on Jun 07 2021
151 Votes
New folde
fatiguetrial.mat
Fatigue_Trial:[162880x4 double a
ay]
New folde
FE1.png
New folde
FE2.png
New folde
fir.mat
X1:[744x1 double a
ay]
X2:[765x1 double a
ay]
X3:[755x1 double a
ay]
X4:[744x1 double a
ay]
X5:[860x1 double a
ay]
X6:[755x1 double a
ay]
New folde
FT1.png
New folde
FT2.png
New folde
maximumvoluntarycontrol.mat
Maximum_Voluntary_Control:[22980x4 double a
ay]
New folde
q1_ed.m
clear all
close all
clc
% Load data from file
load('repeatedflexionextension.mat');
load('fatiguetrial.mat')
% Extract emg signals from data
emg1=Repeated_Flexion_Extension(:,1);
emg2=Repeated_Flexion_Extension(:,2);
emg3=Fatigue_Trial(:,1);
emg4=Fatigue_Trial(:,2);
[emg1_filt, emg1_lineve, emg1_data, emg1_r]= qq1(emg1, 0.05, 0.2);
[emg2_filt, emg2_lineve, emg2_data, emg2_r]= qq1(emg2, 0.05, 0.2);
[emg3_filt, emg3_lineve, emg3_data, emg3_r]= qq1(emg3, 0.01, 0.2);
[emg4_filt, emg4_lineve, emg4_data, emg4_r]= qq1(emg4, 0.01, 0.2);
%% Plotting data
%%
N=length(emg1_data);
s=linspace(0,N, N);
figure(1);
subplot(3,1,1);
plot(s,emg1_data);
xlim([0 N ])
title('Repeated Flexion Extension EMG 1- Raw data');
ylabel('EMG data - mV');
xlabel('Samples')
subplot(3,1,2);
plot(s,emg1_filt,'r');
hold on
plot(emg1_r,'--b');
hold off
xlim([0 N ]);
title('Repeated Flex Ext EMG 1- Rectified and filtered data');
ylabel('EMG data - mV');
xlabel('Samples')
legend('Filtered','Rectified')
subplot(3,1,3);
plot(s,emg1_lineve);
xlim([0 N ])
title('Repeated Flex Ext EMG 1- Linear envelope');
ylabel('EMG data - mV');
xlabel('Samples')
%%
N=length(emg2_data);
s=linspace(0,N, N);
figure(2);
subplot(3,1,1);
plot(s,emg2_data);
xlim([0 N ]);
title('Repeated Flexion Extension EMG 2- Raw data');
ylabel('EMG data - mV');
xlabel('Samples')
subplot(3,1,2);
plot(s,emg2_filt,'r');
hold on
plot(emg2_r,'--b');
hold off
xlim([0 N ]);
title('Repeated Flex Ext EMG 2- Rectified and filtered data');
ylabel('EMG data - mV');
xlabel('Samples');
legend('Filtered','Rectified');
subplot(3,1,3);
plot(s,emg2_lineve);
xlim([0 N ])
title('Repeated Flex Ext EMG 2- Linear envelope');
ylabel('EMG data - mV');
xlabel('Samples')
%%
N=length(emg3_data);
s=linspace(0,N, N);
figure(3);
subplot(3,1,1);
plot(s,emg3_data);
xlim([0 N ]);
title('Fatigue Trial EMG 1- Raw data');
ylabel('EMG data - mV');
xlabel('Samples')
subplot(3,1,2);
plot(s,emg3_filt,'r');
hold on
plot(emg3_r,'--b');
hold off
xlim([0 N ]);
title('Fatigue Trial EMG 1- Rectified and filtered data');
ylabel('EMG data - mV');
xlabel('Samples');
legend('Filtered','Rectified');
subplot(3,1,3);
plot(s,emg3_lineve);
xlim([0 N ])
title('Fatigue Trial EMG 1- Linear envelope');
ylabel('EMG data - mV');
xlabel('Samples');
%%
N=length(emg4_data);
s=linspace(0,N, N);
figure(4);
subplot(3,1,1);
plot(s,emg4_data);
xlim([0 N ])
title('Fatigue Trial EMG 2- Raw data');
ylabel('EMG data - mV');
xlabel('Samples')
subplot(3,1,2);
plot(s,emg4_filt,'r');
hold on
plot(emg4_r,'--b');
hold off
xlim([0 N ]);
title('Fatigue Trial EMG 2- Rectified and filtered data');
ylabel('EMG data - mV');
xlabel('Samples');
legend('Filtered','Rectified');
subplot(3,1,3);
plot(s,emg4_lineve);
xlim([0 N ]);
title('Fatigue Trial EMG 2- Linear envelope');
ylabel('EMG data - mV');
xlabel('Samples');
New folde
q2.png
New folde
q2f.m
%%
clear all
load('fir.mat');
%%
% Parameters
timeLimits = [0 0.743]; % seconds
frequencyLimits = [0 500]; % Hz
overlapPercent = 50;
% Index into signal time region of interest
X1_ROI = X1(:);
sampleRate = 1000; % Hz
startTime = 0; % seconds
timeValues = startTime + (0:length(X1_ROI)-1).'/sampleRate;
minIdx = timeValues >= timeLimits(1);
maxIdx = timeValues <= timeLimits(2);
X1_ROI = X1_ROI(minIdx&maxIdx);
timeValues = timeValues(minIdx&maxIdx);
% Compute spectral estimate
% Run the function call below without output arguments to plot the results
[P1,F1,T1] = pspectrum(X1_ROI,timeValues, ...
'spectrogram', ...
'FrequencyLimits',frequencyLimits, ...
'OverlapPercent',overlapPercent);
subplot(3,2,1)
pspectrum(X1_ROI,timeValues, ...
'spectrogram', ...
'FrequencyLimits',frequencyLimits, ...
'OverlapPercent',overlapPercent);
title('Spectrogram of First active section');
%%
% Parameters
timeLimits = [0 0.754]; % seconds
frequencyLimits = [0 500]; % Hz
overlapPercent = 50;
% Index into signal time region of interest
X3_ROI = X3(:);
sampleRate = 1000; % Hz
startTime = 0; % seconds
timeValues = startTime + (0:length(X3_ROI)-1).'/sampleRate;
minIdx = timeValues >= timeLimits(1);
maxIdx = timeValues <= timeLimits(2);
X3_ROI = X3_ROI(minIdx&maxIdx);
timeValues = timeValues(minIdx&maxIdx);
% Compute spectral estimate
% Run the function call below without output arguments to plot the results
[P3,F3,T3] = pspectrum(X3_ROI,timeValues, ...
'spectrogram', ...
'FrequencyLimits',frequencyLimits, ...
'OverlapPercent',overlapPercent);
subplot(3,2,3)
pspectrum(X3_ROI,timeValues, ...
'spectrogram', ...
'FrequencyLimits',frequencyLimits, ...
'OverlapPercent',overlapPercent);
title('Spectrogram of Third active...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here