diff --git a/Work 1/Choutouridis_Christos_8997_Lab01.zip b/Work 1/Choutouridis_Christos_8997_Lab01.zip new file mode 100644 index 0000000..4893841 Binary files /dev/null and b/Work 1/Choutouridis_Christos_8997_Lab01.zip differ diff --git a/Work 1/Work1_report.pdf b/Work 1/Work1_report.pdf new file mode 100644 index 0000000..275b13d Binary files /dev/null and b/Work 1/Work1_report.pdf differ diff --git a/Work 1/report/Work1_report.pdf b/Work 1/report/Work1_report.pdf index 275b13d..55da4f2 100644 Binary files a/Work 1/report/Work1_report.pdf and b/Work 1/report/Work1_report.pdf differ diff --git a/Work 1/report/Work1_report.tex b/Work 1/report/Work1_report.tex index d16c234..710286e 100644 --- a/Work 1/report/Work1_report.tex +++ b/Work 1/report/Work1_report.tex @@ -89,7 +89,7 @@ \begin{itemize} \item Την παρούσα αναφορά. \item Τον κατάλογο \textbf{scripts/}, που περιέχει τον κώδικα της MATLAB. - \item Το \href{https://git.hoo2.net/hoo2/SystemModling}{σύνδεσμο} με το αποθετήριο που περιέχει όλο το project με τον κώδικα της MATLAB, της αναφοράς και τα παραδοτέα. + \item Το \href{https://git.hoo2.net/hoo2/SystemModling/src/branch/master/Work%201}{σύνδεσμο} με το αποθετήριο που περιέχει όλο το project με τον κώδικα της MATLAB, της αναφοράς και τα παραδοτέα. \end{itemize} \section*{Θέμα 1 – Μοντελοποίηση και Προσομοίωση Συστήματος Εκκρεμούς} @@ -143,10 +143,10 @@ Για τον λόγο αυτό, επεκτείναμε τη διάρκεια προσομοίωσης στα $90$ δευτερόλεπτα. Όπως φαίνεται στο Σχήμα~\ref{fig:90s}, το σύστημα σταθεροποιείται τελικά σε περιοδική μορφή περίπου μετά από $50$ δευτερόλεπτα. -\InsertFigure{!ht}{1}{fig:20s}{../scripts/Prob1_responce_20s.png}{ +\InsertFigure{!ht}{1}{fig:20s}{../scripts/output/Prob1_responce_20s.png}{ Απόκριση του συστήματος για $t \in [0, 20]$ sec. Η μεταβατική φάση παραμένει ενεργή. } -\InsertFigure{!ht}{1}{fig:90s}{../scripts/Prob1_responce_90s.png}{ +\InsertFigure{!ht}{1}{fig:90s}{../scripts/output/Prob1_responce_90s.png}{ Απόκριση του συστήματος για $t \in [0, 90]$ sec. Το σύστημα σταθεροποιείται σε περιοδική συμπεριφορά μετά τα $50$ sec. } @@ -187,7 +187,7 @@ \] Στο Σχήμα~\ref{fig:prob2a} παρουσιάζονται η πραγματική και η εκτιμώμενη γωνία, καθώς και το σφάλμα $e_q(t)$ μεταξύ τους. -\InsertFigure{!ht}{1}{fig:prob2a}{../scripts/Prob2_20s_Ts0.1.png}{ +\InsertFigure{!ht}{1}{fig:prob2a}{../scripts/output/Prob2_20s_Ts0.1.png}{ Αποτελέσματα εκτίμησης παραμέτρων με χρήση όλων των μεταβλητών κατάστασης. } \paragraph*{Συμπεράσματα:} @@ -204,7 +204,7 @@ \] Ακολουθείται η ίδια διαδικασία παλινδρόμησης με την περίπτωση (α), όπως και η ανακατασκευή της απόκρισης. Το Σχήμα~\ref{fig:prob2b} δείχνει τα αντίστοιχα αποτελέσματα. -\InsertFigure{!ht}{1}{fig:prob2b}{../scripts/Prob2b_20s_Ts0.1.png}{ +\InsertFigure{!ht}{1}{fig:prob2b}{../scripts/output/Prob2b_20s_Ts0.1.png}{ Αποτελέσματα εκτίμησης παραμέτρων με χρήση μόνο του $q(t)$ και του $u(t)$. } @@ -238,13 +238,13 @@ \hspace{-2em} \begin{minipage}{0.49\textwidth} \centering - \includegraphics[width=1.15\linewidth]{../scripts/Prob3a_NoiseStd0.0010.png} + \includegraphics[width=1.15\linewidth]{../scripts/output/Prob3a_NoiseStd0.0010.png} \caption{Εκτίμηση με $\sigma = 0.001$} \end{minipage} \hspace{0.5em} \begin{minipage}{0.49\textwidth} \centering - \includegraphics[width=1.15\linewidth]{../scripts/Prob3a_NoiseStd0.0025.png} + \includegraphics[width=1.15\linewidth]{../scripts/output/Prob3a_NoiseStd0.0025.png} \caption{Εκτίμηση με $\sigma = 0.0025$} \end{minipage} \end{figure} @@ -280,7 +280,7 @@ \caption{Εκτιμήσεις και ποσοστά σφάλματος παραμέτρων για διαφορετικές περιόδους $T_s$} \end{table} -\InsertFigure{!ht}{1}{fig:3b}{../scripts/Prob3b_SamplingPeriodEffect.png}{ +\InsertFigure{!ht}{1}{fig:3b}{../scripts/output/Prob3b_SamplingPeriodEffect.png}{ Σφάλμα εκτίμησης ως προς την περίοδο δειγματοληψίας $T_s$. } @@ -319,7 +319,7 @@ \caption{Εκτιμήσεις και ποσοστά σφάλματος παραμέτρων για διαφορετικά πλάτη $A_0$} \end{table} -\InsertFigure{!ht}{1}{fig:3c}{../scripts/Prob3c_AmplitudeEffect.png}{ +\InsertFigure{!ht}{1}{fig:3c}{../scripts/output/Prob3c_AmplitudeEffect.png}{ Σφάλμα εκτίμησης παραμέτρων συναρτήσει του πλάτους εισόδου $A_0$. } diff --git a/Work 1/scripts/Prob3a_NoiseStd0.0010.png b/Work 1/scripts/Prob3a_NoiseStd0.0010.png deleted file mode 100644 index 7af1591..0000000 Binary files a/Work 1/scripts/Prob3a_NoiseStd0.0010.png and /dev/null differ diff --git a/Work 1/scripts/Prob3a_NoiseStd0.0025.png b/Work 1/scripts/Prob3a_NoiseStd0.0025.png deleted file mode 100644 index c5dae5c..0000000 Binary files a/Work 1/scripts/Prob3a_NoiseStd0.0025.png and /dev/null differ diff --git a/Work 1/scripts/Prob3c_AmplitudeEffect.png b/Work 1/scripts/Prob3c_AmplitudeEffect.png deleted file mode 100644 index cb1301d..0000000 Binary files a/Work 1/scripts/Prob3c_AmplitudeEffect.png and /dev/null differ diff --git a/Work 1/scripts/Problem1.m b/Work 1/scripts/Problem1.m index 542b262..7066e80 100644 --- a/Work 1/scripts/Problem1.m +++ b/Work 1/scripts/Problem1.m @@ -28,11 +28,11 @@ subplot(2,1,1); plot(t, x(:,1)); ylabel('q(t) [rad]'); grid on; title('Γωνία'); subplot(2,1,2); plot(t, x(:,2), 'r'); ylabel('dq(t) [rad/s]'); xlabel('t [sec]'); grid on; title('Γωνιακή Ταχύτητα'); -saveas(gcf, 'Prob1_responce_20s.png'); +saveas(gcf, 'output/Prob1_responce_20s.png'); % === Sampling for Problem 2 === Ts = 0.1; % Sampling period -sample_data(t, x, Ts, A0, omega, 'problem1_data.csv'); +sample_data(t, x, Ts, A0, omega, 'output/problem1_data.csv'); % --- Extended simulation to 90 sec --- tspan = [0 90]; @@ -47,4 +47,4 @@ subplot(2,1,1); plot(t, x(:,1)); ylabel('q(t) [rad]'); grid on; title('Γωνία'); subplot(2,1,2); plot(t, x(:,2), 'r'); ylabel('dq(t) [rad/s]'); xlabel('t [sec]'); grid on; title('Γωνιακή Ταχύτητα'); -saveas(gcf, 'Prob1_responce_90s.png'); +saveas(gcf, 'output/Prob1_responce_90s.png'); diff --git a/Work 1/scripts/Problem2a.m b/Work 1/scripts/Problem2a.m index eef38b5..de40d96 100644 --- a/Work 1/scripts/Problem2a.m +++ b/Work 1/scripts/Problem2a.m @@ -12,7 +12,7 @@ mgL_true = m * g * L; theta_true = [mL2_true; c_true; mgL_true]; % Load sampled data from Problem 1 -data = readtable('problem1_data.csv'); +data = readtable('output/problem1_data.csv'); t = data.t; q = data.q; dq = data.dq; @@ -73,7 +73,7 @@ bar(["mL^2", "c", "mgL"], theta_hat); title('Estimated Parameters'); ylabel('Value'); grid on; -saveas(gcf, 'Prob2_20s_Ts0.1.png'); +saveas(gcf, 'output/Prob2_20s_Ts0.1.png'); fprintf(' Actual Parameters: mL^2=%f, c=%f, mgL=%f\n', theta_true(1), theta_true(2), theta_true(3)); fprintf('Estimated Parameters: mL^2=%f, c=%f, mgL=%f\n', theta_hat(1), theta_hat(2), theta_hat(3)); diff --git a/Work 1/scripts/Problem2b.m b/Work 1/scripts/Problem2b.m index dee06ea..4f1b6af 100644 --- a/Work 1/scripts/Problem2b.m +++ b/Work 1/scripts/Problem2b.m @@ -12,7 +12,7 @@ mgL_true = m * g * L; theta_true = [mL2_true; c_true; mgL_true]; % Load sampled data -data = readtable('problem1_data.csv'); +data = readtable('output/problem1_data.csv'); t = data.t; q = data.q; u = data.u; @@ -81,7 +81,7 @@ ylabel('Value'); grid on; % Save figure -saveas(gcf, 'Prob2b_20s_Ts0.1.png'); +saveas(gcf, 'output/Prob2b_20s_Ts0.1.png'); % Print results fprintf(' Actual Parameters: mL^2=%f, c=%f, mgL=%f\n', theta_true(1), theta_true(2), theta_true(3)); diff --git a/Work 1/scripts/Problem3a.m b/Work 1/scripts/Problem3a.m index 669769c..0e72868 100644 --- a/Work 1/scripts/Problem3a.m +++ b/Work 1/scripts/Problem3a.m @@ -13,7 +13,7 @@ mgL_true = m * g * L; theta_true = [mL2_true; c; mgL_true]; % Load clean data -data = readtable('problem1_data.csv'); +data = readtable('output/problem1_data.csv'); t = data.t; q_clean = data.q; u = data.u; @@ -109,6 +109,6 @@ for i = 1:length(noise_levels) grid on; % Save figure - filename = sprintf('Prob3a_NoiseStd%.4f.png', noise_std); + filename = sprintf('output/Prob3a_NoiseStd%.4f.png', noise_std); saveas(gcf, filename); end diff --git a/Work 1/scripts/Problem3b.m b/Work 1/scripts/Problem3b.m index 8334db1..03f15e5 100644 --- a/Work 1/scripts/Problem3b.m +++ b/Work 1/scripts/Problem3b.m @@ -77,4 +77,4 @@ ylabel('Relative Error [%]'); title('Effect of Ts on Parameter Estimation'); grid on; -saveas(gcf, 'Prob3b_SamplingPeriodEffect.png'); +saveas(gcf, 'output/Prob3b_SamplingPeriodEffect.png'); diff --git a/Work 1/scripts/Problem3c.m b/Work 1/scripts/Problem3c.m index 4f5b13e..6035381 100644 --- a/Work 1/scripts/Problem3c.m +++ b/Work 1/scripts/Problem3c.m @@ -19,7 +19,7 @@ dt = 1e-4; % integration resolution T_final = 20; % simulation time % Amplitudes to test -A0_list = [1, 2, 4, 6, 8, 16, 32]; +A0_list = [1, 2, 4, 6, 8, 16]; n_cases = length(A0_list); rel_errors_all = zeros(3, n_cases); @@ -75,4 +75,4 @@ title('Effect of Input Amplitude on Parameter Estimation'); grid on; ylim([0 1.1]); -saveas(gcf, 'Prob3c_AmplitudeEffect.png'); +saveas(gcf, 'output/Prob3c_AmplitudeEffect.png'); diff --git a/Work 1/scripts/Prob1_responce_20s.png b/Work 1/scripts/output/Prob1_responce_20s.png similarity index 99% rename from Work 1/scripts/Prob1_responce_20s.png rename to Work 1/scripts/output/Prob1_responce_20s.png index 33d0ce2..e47a794 100644 Binary files a/Work 1/scripts/Prob1_responce_20s.png and b/Work 1/scripts/output/Prob1_responce_20s.png differ diff --git a/Work 1/scripts/Prob1_responce_90s.png b/Work 1/scripts/output/Prob1_responce_90s.png similarity index 99% rename from Work 1/scripts/Prob1_responce_90s.png rename to Work 1/scripts/output/Prob1_responce_90s.png index 53a9e5c..ba2d88b 100644 Binary files a/Work 1/scripts/Prob1_responce_90s.png and b/Work 1/scripts/output/Prob1_responce_90s.png differ diff --git a/Work 1/scripts/Prob2_20s_Ts0.1.png b/Work 1/scripts/output/Prob2_20s_Ts0.1.png similarity index 99% rename from Work 1/scripts/Prob2_20s_Ts0.1.png rename to Work 1/scripts/output/Prob2_20s_Ts0.1.png index 573e208..7be84c9 100644 Binary files a/Work 1/scripts/Prob2_20s_Ts0.1.png and b/Work 1/scripts/output/Prob2_20s_Ts0.1.png differ diff --git a/Work 1/scripts/Prob2b_20s_Ts0.1.png b/Work 1/scripts/output/Prob2b_20s_Ts0.1.png similarity index 99% rename from Work 1/scripts/Prob2b_20s_Ts0.1.png rename to Work 1/scripts/output/Prob2b_20s_Ts0.1.png index 3d807d0..7137ff5 100644 Binary files a/Work 1/scripts/Prob2b_20s_Ts0.1.png and b/Work 1/scripts/output/Prob2b_20s_Ts0.1.png differ diff --git a/Work 1/scripts/Prob3_Error_vs_Duration.png b/Work 1/scripts/output/Prob3_Error_vs_Duration.png similarity index 100% rename from Work 1/scripts/Prob3_Error_vs_Duration.png rename to Work 1/scripts/output/Prob3_Error_vs_Duration.png diff --git a/Work 1/scripts/Prob3a_ComparisonPlot.png b/Work 1/scripts/output/Prob3a_ComparisonPlot.png similarity index 100% rename from Work 1/scripts/Prob3a_ComparisonPlot.png rename to Work 1/scripts/output/Prob3a_ComparisonPlot.png diff --git a/Work 1/scripts/Prob3a_NoiseEffect.png b/Work 1/scripts/output/Prob3a_NoiseEffect.png similarity index 100% rename from Work 1/scripts/Prob3a_NoiseEffect.png rename to Work 1/scripts/output/Prob3a_NoiseEffect.png diff --git a/Work 1/scripts/output/Prob3a_NoiseStd0.0010.png b/Work 1/scripts/output/Prob3a_NoiseStd0.0010.png new file mode 100644 index 0000000..b69adbc Binary files /dev/null and b/Work 1/scripts/output/Prob3a_NoiseStd0.0010.png differ diff --git a/Work 1/scripts/output/Prob3a_NoiseStd0.0025.png b/Work 1/scripts/output/Prob3a_NoiseStd0.0025.png new file mode 100644 index 0000000..2656679 Binary files /dev/null and b/Work 1/scripts/output/Prob3a_NoiseStd0.0025.png differ diff --git a/Work 1/scripts/Prob3b_SamplingPeriodEffect.png b/Work 1/scripts/output/Prob3b_SamplingPeriodEffect.png similarity index 99% rename from Work 1/scripts/Prob3b_SamplingPeriodEffect.png rename to Work 1/scripts/output/Prob3b_SamplingPeriodEffect.png index 35416ba..7e40ae9 100644 Binary files a/Work 1/scripts/Prob3b_SamplingPeriodEffect.png and b/Work 1/scripts/output/Prob3b_SamplingPeriodEffect.png differ diff --git a/Work 1/scripts/output/Prob3c_AmplitudeEffect.png b/Work 1/scripts/output/Prob3c_AmplitudeEffect.png new file mode 100644 index 0000000..dc05b67 Binary files /dev/null and b/Work 1/scripts/output/Prob3c_AmplitudeEffect.png differ diff --git a/Work 1/scripts/problem1_data.csv b/Work 1/scripts/output/problem1_data.csv similarity index 100% rename from Work 1/scripts/problem1_data.csv rename to Work 1/scripts/output/problem1_data.csv diff --git a/Work 1/scripts/problem3_data_T10s.csv b/Work 1/scripts/output/problem3_data_T10s.csv similarity index 100% rename from Work 1/scripts/problem3_data_T10s.csv rename to Work 1/scripts/output/problem3_data_T10s.csv diff --git a/Work 1/scripts/problem3_data_T20s.csv b/Work 1/scripts/output/problem3_data_T20s.csv similarity index 100% rename from Work 1/scripts/problem3_data_T20s.csv rename to Work 1/scripts/output/problem3_data_T20s.csv diff --git a/Work 1/scripts/problem3_data_T40s.csv b/Work 1/scripts/output/problem3_data_T40s.csv similarity index 100% rename from Work 1/scripts/problem3_data_T40s.csv rename to Work 1/scripts/output/problem3_data_T40s.csv diff --git a/Work 1/scripts/problem3_data_T60s.csv b/Work 1/scripts/output/problem3_data_T60s.csv similarity index 100% rename from Work 1/scripts/problem3_data_T60s.csv rename to Work 1/scripts/output/problem3_data_T60s.csv diff --git a/Work 1/scripts/problem3_data_T90s.csv b/Work 1/scripts/output/problem3_data_T90s.csv similarity index 100% rename from Work 1/scripts/problem3_data_T90s.csv rename to Work 1/scripts/output/problem3_data_T90s.csv