function [Values_L_ecc] = L_ecc(weight,height,time_L_ecc,ch4_L_ecc, ch7_L_ecc, ch8_L_ecc, ch12_L_ecc)
%funkcia na spracovanie nameraných signálov excentrického merania ľavej končatiny
%vstupmi je hmotnosť a výška subjekta a ďalej sú na vstupe výstupy z funkcie imp2vect
%výstupom funkcie je tabuľka parametrov slúžiacich na vyhodnotenie výsledkov
%spustenie funkcie: [Values_L_ecc] = L_ecc(60,1.69,time_L_ecc,ch4_L_ecc, ch7_L_ecc, ch8_L_ecc, ch12_L_ecc)

% weight = _ v kg (subjekt D --> 60)
% height = _ v m (subjekt D --> 1.69)

%vzorkovacia frekvencia
fvz_L_ecc = 4000;

%kolko sekund zo zaznamu nas zaujima
s_L_ecc = 56.5; 
time_L_ecc = time_L_ecc(1:(s_L_ecc*fvz_L_ecc));
ch4_L_ecc = ch4_L_ecc(1:(s_L_ecc*fvz_L_ecc));
ch7_L_ecc = ch7_L_ecc(1:(s_L_ecc*fvz_L_ecc));
ch8_L_ecc = ch8_L_ecc(1:(s_L_ecc*fvz_L_ecc));
ch12_L_ecc = ch12_L_ecc(1:(s_L_ecc*fvz_L_ecc));

%prepočty signálov
angle_L_ecc = ch12_L_ecc *2*1000/10; %uhol v °
torque_L_ecc = ch4_L_ecc *2*1000/5; %krútiaci moment v Nm
EMG_VM_L_ecc = ch7_L_ecc./1000; %EMG vastus medialis v mV
EMG_VL_L_ecc = ch8_L_ecc./1000; %EMG vastus lateralis v mV

%% izokineticky dynamometer

% filtracia signalov z izokinetickeho dynamometra
[b_L_ecc,a_L_ecc]=butter(3,20/fvz_L_ecc,'low');
torque_filtered_L_ecc=filtfilt(b_L_ecc,a_L_ecc,torque_L_ecc);
angle_filtered_L_ecc = filtfilt(b_L_ecc,a_L_ecc,angle_L_ecc);

% detekcia maximálnych hodnôt sily
[yPKS1_L_ecc, xPKS1_L_ecc]=findpeaks(torque_filtered_L_ecc, 'MinPeakHeight', 50, 'MinPeakDistance', 15000); %extenzia
[yPKS2_L_ecc, xPKS2_L_ecc]=findpeaks(-torque_filtered_L_ecc, 'MinPeakHeight', 100, 'MinPeakDistance', 15000); %flexia

%uhly kedy došlo k maximám
yANG1_L_ecc = angle_filtered_L_ecc(xPKS1_L_ecc); %extenzia
yANG2_L_ecc = angle_filtered_L_ecc(xPKS2_L_ecc); %flexia

%priemery sily
EXTENSION_L_ecc = mean(yPKS1_L_ecc); %extenzia...excentricky hamstring
FLEXION_L_ecc = mean(yPKS2_L_ecc);  %flexia...excentricky kvadriceps
HAMQUAD_L_ecc = EXTENSION_L_ecc/FLEXION_L_ecc; %pomer H/Q

%priemery uhlov
ANG_EXTENSION_L_ecc = mean(yANG1_L_ecc); %extenzia
ANG_FLEXION_L_ecc = mean(yANG2_L_ecc); %flexia

%data na normalizáciu - body mass index
BMI_L_ecc = weight/(height^2);

%% EMG 

%filtracia signalov EMG
% pohybové artefakty a nestabilita spojení elektroda-koža
% zasahuju do pásma 0 až 20 Hz … filtrace HP s fm=15-20 Hz
[e_L_ecc,f_L_ecc]=butter(4,20/fvz_L_ecc,'high');
EMG_VL_filtered_L_ecc =filtfilt(e_L_ecc,f_L_ecc,EMG_VL_L_ecc); %vastus lateralis
EMG_VM_filtered_L_ecc =filtfilt(e_L_ecc,f_L_ecc,EMG_VM_L_ecc); %vastus medialis

%RMS 
rmsv_EMG_VL_L_ecc = sqrt(movmean(EMG_VL_filtered_L_ecc.^2, 10)); 
rmsv_EMG_VM_L_ecc = sqrt(movmean(EMG_VM_filtered_L_ecc.^2, 10));

%detekcia maximálnych hodnôt aktivacie
[EMG_VL_yPKS1_L_ecc, EMG_VL_xPKS1_L_ecc]=findpeaks(rmsv_EMG_VL_L_ecc, 'MinPeakHeight', 0.55, 'MinPeakDistance', 20000);
[EMG_VM_yPKS1_L_ecc, EMG_VM_xPKS1_L_ecc]=findpeaks(rmsv_EMG_VM_L_ecc, 'MinPeakHeight', 0.7, 'MinPeakDistance', 20000);

%uhly kedy k maximám došlo
EMG_VL_yPKS1_ANG_L_ecc = angle_filtered_L_ecc(EMG_VL_xPKS1_L_ecc);
EMG_VM_yPKS1_ANG_L_ecc = angle_filtered_L_ecc(EMG_VM_xPKS1_L_ecc);

%uhly kedy k maximám došlo
rectified_EMG_VL_L_ecc =abs(EMG_VL_L_ecc);
max_rectified_EMG_VL_L_ecc = max(rectified_EMG_VL_L_ecc);
rectified_EMG_VM_L_ecc =abs(EMG_VM_L_ecc);
max_rectified_EMG_VM_L_ecc = max(rectified_EMG_VM_L_ecc);

%priemery EMG                                                                
VL_L_ecc = mean(EMG_VL_yPKS1_L_ecc);
VM_L_ecc = mean(EMG_VM_yPKS1_L_ecc);
EMG_L_ecc = VM_L_ecc/VL_L_ecc;

%priemery uhlov
ANG_VL_L_ecc = mean(EMG_VL_yPKS1_ANG_L_ecc);
ANG_VM_L_ecc = mean(EMG_VM_yPKS1_ANG_L_ecc);
                                                               
%% surove signaly
figure
subplot 411
plot(time_L_ecc, ch12_L_ecc)
title('Pozícia - uhol končatiny')
xlabel('Čas [s]')
ylabel('Napätie [V]')
subplot 412
plot(time_L_ecc, ch4_L_ecc)
title('Krútiaci moment')
xlabel('Čas [s]')
ylabel('Napätie [V]')
subplot 413
plot (time_L_ecc, ch7_L_ecc)
title('EMG vastus medialis')
xlabel('Čas [s]')
ylabel('Napätie [mikroV]')
subplot 414
plot(time_L_ecc, ch8_L_ecc) 
title('EMG vastus lateralis')
xlabel('Čas [s]')
ylabel('Napätie [mikroV]')

sgtitle('Ľavá končatina/excentrické meranie - surové signály')

%% torque spracovanie
figure
subplot 311
plot(time_L_ecc,ch4_L_ecc)
title('Krútiaci moment')
xlabel('Čas [s]')
ylabel('Napätie [V]')
subplot 312
plot(time_L_ecc,torque_filtered_L_ecc)
title('Krútiaci moment: prepočty a filtrácia')
xlabel('Čas [s]')
ylabel('Krútiaci moment [Nm]')
subplot 313
hold on
plot(time_L_ecc,abs(torque_filtered_L_ecc))
scatter(xPKS1_L_ecc./fvz_L_ecc, abs(yPKS1_L_ecc), 'magenta')
scatter(xPKS2_L_ecc./fvz_L_ecc, abs(yPKS2_L_ecc), 'black')
title('Krútiaci moment: detekcia max. hodnôt a prevod do absolútnych hodnôt')
xlabel('Čas[s]')
ylabel('Krútiaci moment [Nm]')

sgtitle('Ľavá končatina/excentrické meranie - spracovanie krútiaceho momentu')

%% angle spracovanie
figure
subplot 311
plot(time_L_ecc, ch12_L_ecc)
title('Pozícia - uhol končatiny')
xlabel('Čas [s]')
ylabel('Napätie [V]')
subplot 312
plot(time_L_ecc, angle_filtered_L_ecc)
title('Pozícia - uhol končatiny: prepočty a filtrácia')
xlabel('Čas [s]')
ylabel('Uhol [°]')
subplot 313
hold on
plot(time_L_ecc,angle_filtered_L_ecc)
scatter(xPKS1_L_ecc./fvz_L_ecc,yANG1_L_ecc,'magenta')
scatter(xPKS2_L_ecc./fvz_L_ecc,yANG2_L_ecc, 'black')
scatter(EMG_VL_xPKS1_L_ecc./fvz_L_ecc,EMG_VL_yPKS1_ANG_L_ecc, 'red')
scatter(EMG_VM_xPKS1_L_ecc./fvz_L_ecc,EMG_VM_yPKS1_ANG_L_ecc, 'green')
title('Pozícia - uhol končatiny')
xlabel('Čas[s]')
ylabel('Uhol [°]')
legend('uhol v čase', 'krútiaci moment - extenzia', 'krútiaci moment - flexia','EMG VL', 'EMG VM')

sgtitle('Ľavá končatina/excentrické meranie - spracovanie pozície = uhlu končatiny') 

%% emg spracovanie - rovnaké pre VL aj VM
figure
subplot 311
plot(time_L_ecc, ch8_L_ecc) 
title('EMG vastus lateralis')
xlabel('Čas [s]')
ylabel('Napätie [mikroV]')
subplot 312
plot(time_L_ecc, EMG_VL_filtered_L_ecc)
title('EMG vastus lateralis: prepočet a filtrácia')
xlabel('Čas [s]')
ylabel('Napätie [mV]')
subplot 313
plot(time_L_ecc, rmsv_EMG_VL_L_ecc)
hold on
scatter(EMG_VL_xPKS1_L_ecc./fvz_L_ecc, EMG_VL_yPKS1_L_ecc, 'black')
hold off
title('EMG vastus lateralis: RMS a detekcia max. hodnôt')
xlabel('Čas [s]')
ylabel('Napätie [mV]')

sgtitle('Ľavá končatina/excentrické meranie - spracovanie EMG signálu') 

%% spracované data
figure
subplot 411
hold on
plot(time_L_ecc,angle_filtered_L_ecc)
scatter(xPKS2_L_ecc./fvz_L_ecc,yANG2_L_ecc, 'black')
scatter(xPKS1_L_ecc./fvz_L_ecc,yANG1_L_ecc,'magenta')
scatter(EMG_VL_xPKS1_L_ecc./fvz_L_ecc,EMG_VL_yPKS1_ANG_L_ecc, 'red')
scatter(EMG_VM_xPKS1_L_ecc./fvz_L_ecc,EMG_VM_yPKS1_ANG_L_ecc, 'green')
title('Pozícia - uhol končatiny')
xlabel('Čas[s]')
ylabel('Uhol [°]')
legend('0° -> 90° = flexia končatiny, 90° -> 0° = extenzia končatiny', 'krútiaci moment - flexia', 'krútiaci moment - extenzia','EMG vastus lateralis', 'EMG vastus medialis')
subplot 412
hold on
plot(time_L_ecc,abs(torque_filtered_L_ecc))
scatter(xPKS2_L_ecc./fvz_L_ecc, abs(yPKS2_L_ecc), 'black')
scatter(xPKS1_L_ecc./fvz_L_ecc, abs(yPKS1_L_ecc), 'magenta')
title('Krútiaci moment')
xlabel('Čas[s]')
ylabel('Krútiaci moment [Nm]')
legend('Krútiaci moment v čase', 'maximá počas flexie', 'maximá počas extenzie');
subplot 413
plot(time_L_ecc, rmsv_EMG_VM_L_ecc) %,'r')
hold on
scatter(EMG_VM_xPKS1_L_ecc./fvz_L_ecc, EMG_VM_yPKS1_L_ecc, 'green')
hold off
title('EMG vastus medialis - RMS')
xlabel('Čas [s]')
ylabel('Napätie [mV]')
legend('EMG vastus medialis v čase' , 'maximálne aktivácie')
subplot 414
plot(time_L_ecc, rmsv_EMG_VL_L_ecc)
hold on
scatter(EMG_VL_xPKS1_L_ecc./fvz_L_ecc, EMG_VL_yPKS1_L_ecc, 'red')
title('EMG vastus lateralis - RMS')
xlabel('Čas [s]')
ylabel('Napätie [mV]')
legend('EMG vastus leteralis v čase' , 'maximálne aktivácie')

sgtitle('Ľavá končatina/excentrické meranie - spracované signály')

%% hodnoty
values_L_ecc = zeros(11,1);
values_L_ecc(1,1) = BMI_L_ecc;
values_L_ecc(2,1) = EXTENSION_L_ecc;
values_L_ecc(3,1) = ANG_EXTENSION_L_ecc;
values_L_ecc(4,1) = FLEXION_L_ecc;
values_L_ecc(5,1) = ANG_FLEXION_L_ecc;
values_L_ecc(6,1) = VM_L_ecc;
values_L_ecc(7,1) = ANG_VM_L_ecc;
values_L_ecc(8,1) = VL_L_ecc;
values_L_ecc(9,1) = ANG_VL_L_ecc;
values_L_ecc(10,1)= max_rectified_EMG_VM_L_ecc; 
values_L_ecc(11,1)= max_rectified_EMG_VL_L_ecc;

values_L_ecc = values_L_ecc.';
column_L_ecc = {'BMI','Hamstring_Exc','Uhol_HE','Kvadriceps_Exc','Uhol_KE','VM_Exc','Uhol_VME ','VL_Exc','Uhol_VLE','Max_VME','Max_VLE'};
row_L_ecc = {'Subjekt'};
Values_L_ecc = array2table(values_L_ecc, 'RowNames', row_L_ecc, 'VariableNames', column_L_ecc);
