GRABMyoFlow - Dataset extension 1.0.0

File: <base>/grabmyoflow_visualize_static.m (2,234 bytes)
% === Script Initialization and Setup ===
clear all;          
close all;          

% Define indices for data plotting.
plot_reps = [1,2];        % Specify which repetitions to plot [1-7].
plot_gestures = [1,13];  % Specify which movement types to plot [1-17].
channelsToPlot = [1,5,6,7,9,10]; % Specify which data channels to display in subplots [1-12].

% === File Loading and Validation ===
fileName = uigetfile('', 'Select File');
if fileName == 0
    error('No File selected.');
end
[~, baseName, ~] = fileparts(fileName);

fileParts = split(baseName,'_');
if length(fileParts) < 2
    error('File name does not match expected format: [sessionID]_[subjectID]');
end
sessionParts = split(fileParts{1},'session');
sessionIdx = str2double(sessionParts{2}); 
subjectParts = split(fileParts{2},'participant');
subjectIdx = str2double(subjectParts{2});


% Load the 'DATA_WRIST' variable from the selected MAT file.
Edata = load(fileName, 'DATA_WRIST');
DATA_WRIST = Edata.DATA_WRIST;

% === Plotting Loop ===
for j = 1:length(plot_reps)
    repIdx = plot_reps(j);
    for k = 1:length(plot_gestures)
        moveIdx = plot_gestures(k);
        if all(cellfun(@isempty, DATA_WRIST(repIdx,moveIdx)))
            continue;
        end

        % === Y-Axis Limit Calculation ===
        allChannelData = DATA_WRIST{repIdx, moveIdx}(:,channelsToPlot);
        globalMaxAbs = max(max(abs(allChannelData)));
        yLimit = globalMaxAbs * 1.05;
        figure('WindowState', 'maximized');
        for i = 1:length(channelsToPlot)
            ch = channelsToPlot(i);
            subplot(length(channelsToPlot), 1, i);
            currentData = DATA_WRIST{repIdx, moveIdx}(:,ch);
            plot(currentData, 'b', 'LineWidth', 1);
            ylim([-yLimit, yLimit]);
            xlim([0,10240]);
            ylabel(sprintf('Ch %d', ch));
            grid on;
            if i == length(channelsToPlot)
                xlabel('Samples');
            else
                set(gca, 'XTickLabel', []);
            end
            
        end
        sgtitle(sprintf('Participant %d - Session %d - Gesture %d - Repetition %d', subjectIdx,sessionIdx, moveIdx, repIdx));
    end
end