%% vytvoreni prenosoveho modelu pomoci ERA identifikace
clear all;
close all;

% load('data_raw_plusVstup_noise.mat')
% Encoders=[data_raw_plusvstup.Y(1).Data' data_raw_plusvstup.Y(2).Data' data_raw_plusvstup.Y(3).Data' data_raw_plusvstup.Y(4).Data'];
% Motor=data_raw_plusvstup.Y(5).Data';
% Time=data_raw_plusvstup.X.Data';
% T = data_raw_plusvstup.Capture.SamplingPeriod;
% U = [Time Motor];
% Y = [Time Encoders(:,2)];
% save DataMereniNoise U Y

load DataMereniNoise

% pocet stavu
rad = 8;
%% ARX identifikace
[IdPar,IdEps,Yout] = ARXidentifikace(U,Y,rad);

figure;plot(Y(:,1),Y(:,2),Y(rad+1:end,1),Yout,':r');title('ARX Identifikace');xlabel('cas [s]');ylabel('vystup');
legend('trenovaci data','natrenovana data');
figure;plot(Y(rad+1:end,1),IdEps);title('chyba ARX Identifikace');xlabel('cas [s]');ylabel('absolutni chyba identifikace');

%% porovnani predikce s identifikovanym ARX modelem

% load('data_raw_plusVstup_chirp.mat')
% Encoders=[data_raw_plusvstup.Y(1).Data' data_raw_plusvstup.Y(2).Data' data_raw_plusvstup.Y(3).Data' data_raw_plusvstup.Y(4).Data'];
% Motor=data_raw_plusvstup.Y(5).Data';
% Time=data_raw_plusvstup.X.Data';
% T = data_raw_plusvstup.Capture.SamplingPeriod;
% Utest = [Time Motor];
% Ytest = [Time Encoders(:,2)];
% save DataMereniChirp Utest Ytest

load DataMereniChirp

[YoutPred,epsPred] = ARXpredikce(Utest,Ytest(1:rad,2),Ytest,rad,IdPar);

%% vykresleni predikovanych dat
figure;plot(Ytest(:,1),Ytest(:,2),Ytest(:,1),YoutPred,':r');title('ARX Predikce s horizontem 1');xlabel('cas [s]');ylabel('vystup');
legend('simulacni data','predikovana ARX data');
figure;plot(Ytest(:,1),epsPred(1:end));title('chyba ARX Predikce s horizontem 1');xlabel('cas [s]');ylabel('absolutni chyba predikce');

% %% porovnani simulace s identifikovanym ARX modelem
% [YoutSim,epsSim] = ARXsimulace([t' vstup'],Ytest(1:rad,2),Ytest,rad,IdPar);
% 
% %% vykresleni vystupnich dat
% figure;plot(Ytest(:,1),Ytest(:,2),t,YoutSim,':r');title('ARX Simulace');xlabel('cas [s]');ylabel('vystup');
% legend('simulacni data','simulovana ARX data');
% figure;plot(t(1:end),epsSim(1:end));title('chyba ARX Simulace');xlabel('cas [s]');ylabel('absolutni chyba simulace');

