MILimbEEG: An EEG Signals Dataset based on Upper and Lower Limb Task During the Execution of Motor and Motorimagery Tasks
In this work, an experimental methodology for the acquisition of EEG signals from volunteer subjects was developed. The volunteers are colleagues and research fellows from ESPOL and patients of the Hospital Luis Vernaza for participating as test subjects.
Steps to reproduce
Raw dataset preparation First we set the folder where the functions are located, using the function addpath(genpath('./src')). The data will be located in the data folder, using the function addpath(path=fullfile('./data/')). Finally, the function folders = FindFolders(path) is used to generate a vector with the names of all the folders inside data. Since inside the data folder are the folders of all subjects, the generated vector has the names from S1 to S24. The data can be visualized using the function plot(dataNew). Raw dataset preprocessing Before preprocessing the csv files you have to load them using the function readtable which returns the file as a table. Then with the function dataNew=table2array(data) the table file is converted into an array with double values. In the preprocessing the data can be normalized using the function DataNorm = fNormalization(dataNew), this function receives the raw data and returns the normalized data. The data can be visualized using the function plot(DataNorm). Feature extraction Each of the 124 files belonging to each of the 24 subjects represents one of the 8 possible tasks. The function Label = fLabelEEG(filenames(j).name) allows to know the task to which each file belongs, this number is known as label. For feature extraction many sophisticated methods can be used, in this example code we have decided to use the RMS value of each electrode per file. In this way, using the function DataRMS = [rms(DataNorm) Label] to convert each file into a vector of 16 values and at the end we add the Label corresponding to the task that represents that file. Finally, we obtain a data matrix called allData containing 2976 rows x 17 columns. Statistical information of rms in EEG dataset Statistical information can be extracted from each electrode using the function datastats. The electrodes show mean values close to zero and low standard deviation values. These results show which electrodes have the lowest low frequency noise (Offset Voltage). Feature Selection For feature selection, the correlation matrix can be used to identify electrodes that have a high correlation. The function corrcoef(allData(:,1:16)) allows to calculate the correlation matrix of each electrode with the other electrodes. The results indicate that there are no electrodes that are highly correlated and therefore do not have redundant information. Finally, the file was stored in csv format using the function csvwrite('AllDataRMS.csv',allData).