
% Název BP: 
% CS: Analýza zakřivení páteře s využitím moderních senzorů
% EN: Back-bone deformation analysis using modern sensors

% Kód pro úpravu a zobrazení dat z dlouhodobého snímání v rámci BP
% Autor: Vojtěch Fiala
% Datum: 26. 4. 2018
% Kód byl vytvářen v programu MATLAB R2015b (akademická verze)


%==========================================================================
%==========================================================================

% Vyčíštění po předchozí činosti
clear all; clc;
close all;

questdlg('Před zadáním názvu souboru s daty je nutno tento soubor zkopírovat do složky s tímto kódem! Při zadávání pozor na velká a malá písmena!!',...
    'Upozornění');

%=============== Nutno zadat název souboru!===============
%=============== Výzva proběhne automaticky ==============
%=========================================================
input=inputdlg({'Název souboru is příponou (např. DATA.txt)'},'Napiš název souboru',[1 50],{'DATA.txt'});
                    % input='DATA.txt';
%=========================================================

% Načtení dat ze souboru
pom=fopen(input{1,1});
data=textscan(pom,'%s');
sym=[];

% Zajištění, že budou všechny vektory stejně dlouhé
h=round(length(data{1,1})/3)+7;
vektorx1=zeros(1,h);
vektorx2=zeros(1,h);
vektorx3=zeros(1,h);

vektory1=zeros(1,h);
vektory2=zeros(1,h);
vektory3=zeros(1,h);

% Inicializace hodnot pro konečné vektory
v=1;
o=1;
p=1;

% Roztřídění dat získaných ze souboru
for i=1:length(data{1,1})
    for j=1:length(data{1,1}{i,1})
        if(data{1,1}{i,1}(j)==';')
            sym=[sym j];
        end
    end
    if(data{1,1}{i,1}(1)=='1')
        vektorx1(v)=str2num(data{1,1}{i,1}(sym(1)+1:sym(2)-1));
        vektory1(v)=str2num(data{1,1}{i,1}(sym(2)+1:end));
        v=v+1;
    elseif(data{1,1}{i,1}(1)=='2')
        vektorx2(o)=str2num(data{1,1}{i,1}(sym(1)+1:sym(2)-1));
        vektory2(o)=str2num(data{1,1}{i,1}(sym(2)+1:end));
        o=o+1;
    elseif(data{1,1}{i,1}(1)=='3')
        vektorx3(p)=str2num(data{1,1}{i,1}(sym(1)+1:sym(2)-1));
        vektory3(p)=str2num(data{1,1}{i,1}(sym(2)+1:end));
        p=p+1;
    end
    sym=[];
end

% Úprava hodnot průměrovacím filtrem o 3 prvcích
for k=2:length(vektorx1)-1
    x1(k-1)=mean(vektorx1(k-1:k+1));%+vektorx1(k)+vektorx1(k+1))/3
    x2(k-1)=mean(vektorx2(k-1:k+1));%+vektorx2(k)+vektorx2(k+1))/3;
    x3(k-1)=mean(vektorx3(k-1:k+1));%+vektorx3(k)+vektorx3(k+1))/3;
    y1(k-1)=mean(vektory1(k-1:k+1));%+vektory1(k)+vektory1(k+1))/3;
    y2(k-1)=mean(vektory2(k-1:k+1));%+vektory2(k)+vektory2(k+1))/3;
    y3(k-1)=mean(vektory3(k-1:k+1));%+vektory3(k)+vektory3(k+1))/3;
end

% Zobrazení grafů pro jednotlivé senzory
% Krční senzor:
figure
subplot(211)
plot(x1,'b')
title('Krční senzor');
ylabel('Sklon [°]');
xlabel('Záznamy [-]');
legend('Sklon v x-ose','Location','Best');
subplot(212)
plot(y1,'r')
ylabel('Náklon [°]');
xlabel('Záznamy [-]');
legend('Náklon v y-ose','Location','Best');

% Hrudní senzor:
figure
subplot(211)
plot(x2,'b')
title('Hrudní senzor');
ylabel('Sklon [°]');
xlabel('Záznamy [-]');
legend('Sklon v x-ose','Location','Best');
subplot(212)
plot(y2,'r')
ylabel('Náklon [°]');
xlabel('Záznamy [-]');
legend('Náklon v y-ose','Location','Best');

% Bederní senzor:
figure
subplot(211)
plot(x3,'b')
title('Bederní senzor');
ylabel('Sklon [°]');
xlabel('Záznamy [-]');
legend('Sklon v x-ose','Location','Best');
subplot(212)
plot(y3,'r')
ylabel('Náklon [°]');
xlabel('Záznamy [-]');
legend('Náklon v y-ose','Location','Best');

% Konec kódu pro zpracování dat z dlouhodobého snímání.
%==========================================================================
