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 »
The assignment questions are all in the matlab assessment document uploaded. Must be completed in matlab script. Any questions please email. All data needed is also uploaded


Biomedical Signal Processing and Analysing [MTE-40031-2019] 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 brachii 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 irrelevant 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-40031-2019] 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 162880 values. • Column 2 is EMG2 data in mV with 162880 values. • 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-40031-2019] 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 corresponds to full elbow extension and ~120 degrees corresponds 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-40031-2019] 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 biceps, 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.1997.82.1.144?utm_source=TrendMD&utm_medium=cpc&utm_campaign=Journal_of_Applied_Physiology_TrendMD_0& Maximum_Voluntary_Control:[22980x4 double array] Repeated_Flexion_Extension:[9260x4 double array] Fatigue_Trial:[162880x4 double array]
Answered 2 days AfterJun 05, 2021

Answer To: Biomedical Signal Processing and Analysing [MTE XXXXXXXXXX] 1 INTRODUCTION Biomechanics of the upper...

Hanumantha Rao answered on Jun 07 2021
149 Votes
New folder/fatiguetrial.mat
Fatigue_Trial:[162880x4 double array]
New folder/FE1.png
New folder/FE2.png
New folder/fir.mat
X1:[744x1 double array]
X2:[765x1 double array]
X3:[755x1 double array]
X4:[744x1 double array]
X5:[860x1 double array]
X6:[755x1 double array]
New folder/FT1.png
New folder/FT2.png
New folder/maximumvoluntarycontrol.mat
Maximum_Voluntary_Control:[22980x4 double array]
New folder/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 folder/q2.png
New folder/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