▷ #EMG signal classification with Machine Learning #ML using #Matlab
Las señales EMG (ElectromiografÃa) que representan actividad muscular de cualquier sujeto, pueden ser adquiridas de forma
superficial utilizando electrodos en la piel que cubre el músculo de interés. Al adquirir señales EMG durante la ejecución de tareas motoras,
estas señales contienen información en el dominio del tiempo y frecuencia correspondiente a la actividad muscular involucrada en la tarea
motora realizada. Las señales EMG pueden ser analizadas mediante algoritmos de clasificación para determinar de forma automática qué tipo
de actividad está realizando el sujeto, esta detección es usada para el control de prótesis de rehabilitación.
Cargar los datos desde carpeta especÃfica
clear;clc;
dir='D:\...\Letras_csv\';
Fs=200;%Hz frecuencia de muestreo
NameFolder=importdata(strcat(dir,'files.txt'));
%5 carpetas con las tareas A, B, I, L, O
%cada carpeta contiene 100 archivos de cada tarea correspondiente
%Cada archivo tiene 3s de adquisición
Crear una sola fila de valores RMS por cada electrodo EMG, esto por cada archivo
AllEvents=[];%almacenará la información de todos las tareas
AllLabels=[];%almacenará las etiquetas de todos las tareas
Labels=[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];
%A=10000; B=01000; I=00100; L=00010; O=00001
for i=1:length(NameFolder)% las 5 carpetas
NameFiles=importdata(strcat(dir,...
strcat(string(NameFolder(i,:))),'files.txt'));
%recorro cada fila del vector con nombres de las carpetas
RMSE=[];
for j=1:length(NameFiles)
%recorro cada fila del vector con nombres de archivos con los datos
File=csvread(strcat(dir,strcat(string(NameFolder(i,:))),...
strcat(string(NameFiles(j,:)),'.csv')));
%se lee cada archivo CSV de 3 segundos de muestras cada uno
RMSE=[RMSE;rms(File(:,:))];
%saca el RMS de cada electrodo y crea una fila
AllLabels=[AllLabels;Labels(i,:)];
% en cada fila se coloca el label correspondiente a cada evento
end
AllEvents=[AllEvents;RMSE];
% los features son los valores rms de los 8 electrodos EMG
end
size(AllEvents)% son 8 electrodos EEG y 500 eventos
size(AllLabels)% son 5 letras y 500 eventos
Llamar el toolbox de matlab
nnstart
Probar la red neuronal implementada
clear;clc;
inNN=load('inNN.mat');inNN=inNN.AllEvents;
%guardar previamente desde el workspace
outNN=load('outNN.mat');outNN=outNN.AllLabels;
%guardar previamente desde el workspace
pred=[];
pred=myNeuralNetworkFunction(inNN(:,:));
%se crea un vector de clasificacion analizando el vector de inNN
figure;
plot(pred(:,1)+pred(:,2)*2+pred(:,3)*3+pred(:,4)*4+pred(:,5)*5,'ob');
hold on;
plot(outNN(:,1)+outNN(:,2)*2+outNN(:,3)*3+outNN(:,4)*4+outNN(:,5)*5,'.r');
legend('Classification NN','Target');
xlabel('500 eventos de 3 s cada una');
ylabel('A=1, B=2, I=3, L=4, O=5');
title('EMG classification neural network');
Calculo del error cuadratico medio
err = immse(outNN,pred)
err = 3.0589e-06
acc=1-err
acc = 1.0000
Leer temas relacionados:
Comentarios
Publicar un comentario