1
0
Fork 0

tex,pics: add batch 1

This commit is contained in:
leo 2023-03-15 18:02:37 +01:00
parent f76291d123
commit 8cb60a0521
Signed by: wanderer
SSH Key Fingerprint: SHA256:Dp8+iwKHSlrMEHzE3bJnPng70I7LEsa3IJXRH/U+idQ
11 changed files with 265 additions and 0 deletions

BIN
res/error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

BIN
res/explicit_error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

BIN
res/explicit_theta.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
res/model.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
res/samplecount.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
res/signal_u.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
res/signal_y.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

BIN
res/step_response.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
res/theta.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
res/uy_correlation.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

View File

@ -1 +1,266 @@
Jazyky zvolené pre vypracovanie práce boli \href{https://go.dev/}{Go} (výpočty
a celková koordinácia), Matlab (výpočty) a Python (vizualizácie).
Pseudonáhodné dáta reprezentujúce signál boli vygenerované programom Matlab -
Simulink\footnotemark{}.
\\
\\
Kód je dostupný na nasledujúcom odkaze:\\
\url{https://git.dotya.ml/wanderer/ak9im/src/p3}.
\\
Kód tohto protokolu je dostupný na nasledujúcom odkaze:\\
\url{https://git.dotya.ml/wanderer/ak9im-proto3}.
\footnotetext{Matlab bol používaný na systéme Arch Linux (btw\texttrademark)
\href{https://bbs.archlinux.org/viewtopic.php?id=277970}{po}
\href{https://bbs.archlinux.org/viewtopic.php?pid=2051175#p2051175}{prekonaní}
\href{https://uk.mathworks.com/matlabcentral/answers/1798895-invalid-cross-device-link-18-when-saving-a-file-on-arch-linux}{viacerých}
\href{https://www.mathworks.com/matlabcentral/answers/93703-why-do-i-receive-host-id-error-after-selecting-a-license-file-during-installation}{problémov}
s~inštaláciou, aktiváciou, QT + Wayland, \texttt{libfreetype.so} a inými.}
\subsection{Spojitý model}
\begin{equation*}
G(s) = \frac{1}{2s^2 + 5s + 1}
\end{equation*}
\subsection{Simulinkové schéma pre simuláciu pseudonáhodného signálu so
zavedeným výstupom zdroja bieleho šumu}
\begin{figure}[ht]
\centering
\includegraphics[width=.80\textwidth]{res/model}
\caption{Simulinkové schéma pre simuláciu pseudonáhodného signálu so
zavedeným výstupom zdroja bieleho šumu}
\label{fig:model}
\end{figure}
Parametre zdroja bieleho šumu:
\begin{description}
\item[Noise power $CoV$] 0.0001
\item[Sample time ($Ts$)] 0.01s
\item[Seed ($seed$)] 23341
\end{description}
\newpage
\subsection{Perióda vzorkovania}
\begin{figure}[ht]
\centering
\includegraphics[width=.80\textwidth]{res/step_response}
\caption{Prechodová charakteristika modelu podľa \texttt{step(1, [2 5 1])}}
\label{fig:stepresponse}
\end{figure}
Prechodová charakteristika zobrazená na obrázku~\ref{fig:stepresponse} bola
získaná príkazom \texttt{step(1 [2 5 1])} v Matlabe. V amplitúde nadobúda
stabilne hodnotu $1$ po cca.~30 sekundách, perióda vzorkovania na výstupoch
\textit{u} a \textit{y} bola teda podľa zadania zvolená na 3s (aktívna časť =
10 vzoriek $\rightarrow 30s / 10 = 3s$). Minimálny počet vzoriek bol predpísaný
na 250, dĺžka vzorkovania bola preto nastavená na 750s, rovnako ako v prípade
protokolov 1 a 2.
\newpage
\subsection{Vybudenie sústavy pseudonáhodným signálom}
Sústava zobrazená na obrázku~\ref{fig:model} bola vybudená pseudonáhodným
signálom s rovnomerným (\textit{uniform}) rozložením hodnôt v intervale
$<-1;1>$. Vzorkovaním signálu bolo získaných celkom 251 hodnôt.
\begin{figure}[ht]
\centering
\includegraphics[width=.35\textwidth]{res/samplecount}
\caption{Počet vzoriek zachytených na výstupoch \textit{u} a \textit{y}}
\label{samplecount}
\end{figure}
\subsection{Spracovanie vzoriek - štruktúra programu}
Zachytené dáta (\texttt{out.u} aj \texttt{out.y}) boli uložené ako do súborov:
\begin{itemize}
\item \texttt{p3/data/m.csv} ako matica zložená z dvoch stĺpcových vektorov
($u, y$),
\item \texttt{p3/data/\{u,y\}.csv} zvlášť ako stĺpcové vektory.
\end{itemize}
\\
Program načíta tieto dáta, spočíta štatistické charakteristiky a následne:
\begin{itemize}
\item najskôr získa parametre ARX modelu $\theta_{r}$ a chybu odhadu
$\hat{e}_{r}$ pomocou \textbf{Rekurzívnej metódy najmenších štvorcov}
(RLSq) a
\item nakoniec zavolá Matlab skript \texttt{p3/matlab/explicit.m} pre výpočet
parametrov $\theta_{e}$ a chyby $\hat{e}_{e}$ pomocou \textbf{Explicitnej
metódy najmenších štvorcov} (ELSq).
\end{itemize}
\\
Pre výpočet explicitnej metódy bol zvolený Matlab (resp. Matlab skript volaný z
Go programu) z dôvodu v podstate neexistujúcej infraštruktúry pre zložitejšie
operácie s Toeplitzovými maticami v Go (knižnica \texttt{gonum}) a rovnako v
Pythone (knižnice \texttt{numpy}, \texttt{pandas}). Naopak, pre Matlab sú
spomínané výpočty hračkou.
Po ukončení výpočtov skript samostatne aj materský Go program zapíšu získané
dáta (štatistické charakteristiky, odhady parametrov modelu a chyby odhadov) do
súborov v priečinku \texttt{p3/data}.
Tieto sú ďalej použité na vizualizáciu (grafy v tomto protokole) pomocou Python
skriptu \texttt{p3/visualise.py}.
\newpage
\subsection{Získané signály}
\begin{figure}[ht]
\centering
\includegraphics[width=.79\textwidth]{res/signal_u}
\caption{Náhodne vygenerovaný signál pred aplikáciou filtra - u}
\label{fig:signalorig}
\end{figure}
\begin{figure}[ht]
\centering
\includegraphics[width=.79\textwidth]{res/signal_y}
\caption{Signál po aplikácii filtra a po primiešaní bieleho šumu - y}
\label{fig:signalfiltered}
\end{figure}
\newpage
\subsection{Štatistické charakteristiky\ 1.\ a\ 2.\ rádu}
Vypočítali sme štatistické charakteristiky prvého a druhého rádu, ktorými sú:
\begin{itemize}
\item stredná hodnota pre u, y (viď tabuľka~\ref{table:stats})
\item rozptyl pre u, y (viď tabuľka~\ref{table:stats})
\item koeficient korelácie (viď tabuľka~\ref{table:stats})
\item kovariančná matica (viď tabuľka~\ref{table:covmatrix})
\end{itemize}
% \newpage
\subsection{Štatistické charakteristiky - súhrn}
\begin{table}[!hbt]
\centering
\begin{tabular}{r|cc}
& \textbf{u} & \textbf{y} \\
\hline
\textbf{u} & 1.1583640130324268647 & 0.03705028274210936 \\
\textbf{y} & 0.03705028274210936 & 0.238500269470011544 \\
\end{tabular}
\caption{Kovariančná matica}
\label{table:covmatrix}
\end{table}
Zo zaznamenaných dát signálov sme spočítali odhady stredných hodnôt a
rozptylov.
V~tabuľke~\ref{table:stats} môžeme vidieť veľmi výrazné posuny signálu po
prechode filtrom oproti pôvodnému signálu hlavne v rozptyle, zmeny v strednej
hodnote sú relatívne malé.
\begin{table}[!hbt]
\centering
\begin{tabular}{r|cc}
& \textbf{u} & \textbf{y} \\
\hline
\textbf{$\hat{\mu}_{u,y}$ (stredná hodnota)} & -0.0731240350331255062 & -0.028904091125753022 \\
\textbf{$\hat{\sigma}^{2}_{u,y}$ (rozptyl)} & 1.1583640130324268647 & 0.23850026947001154 \\
\textbf{$\hat{r}(U,Y)$ (koeficient korelácie)} & \multicolumn{2}{c}{0.07048952128001121} \\
\end{tabular}
\caption{Súhrn štatistických charakteristík}
\label{table:stats}
\end{table}
Hodnota koeficientu korelácie je mierne kladná, čo znamená jemný náznak
tvrdenia, že signály spolu súvisia (viď tiež obrázok~\ref{fig:correlation-uy}).
\newpage
\subsection{Korelácia}
\begin{figure}[ht]
\centering
\includegraphics[width=.79\textwidth]{res/uy_correlation}
\caption{Korelácia UY}
\label{fig:correlation-uy}
\end{figure}
\newpage
\newpage
\subsection{Rekurzívna metóda najmenších štvorcov (RLSq)}
\subsubsection{Theta}
\begin{figure}[ht!]
\centering
\includegraphics[width=.79\textwidth]{res/theta}
\caption{Vektor odhadov parametrov $\theta$ ARX modelu metódou RLSq}
\label{fig:theta}
\end{figure}
\subsubsection{Chyba predikcie}
\begin{figure}[ht!]
\centering
\includegraphics[width=.79\textwidth]{res/error}
\caption{Chyba predikcie parametrov $\hat{e}$ ARX modelu metódou RLSq}
\label{fig:theta}
\end{figure}
\newpage
\subsection{Explicitná metóda najmenších štvorcov (ELSq)}
\subsubsection{Theta}
\begin{table}[!hbt]
\centering
\begin{tabular}{r|cc}
& \textbf{$\hat{\theta}_0$} & \textbf{$\hat{\theta}_1$} \\
\textbf{$\hat{a}_1$} & 0.575438144524362 & 0.0749122150759669 \\
\textbf{$\hat{a}_2$} & -0.44843045758266 & -0.0349682737100377 \\
\textbf{$\hat{b}_1$} & 0.067213688016673 & 0.00632428295715472 \\
\textbf{$\hat{b}_2$} & 0.0380293534942219 & -0.0253526197208066 \\
\end{tabular}
\caption{Odhad parametrov $\theta$ ARX modelu metódou ELSq}
\label{table:explicittheta}
\end{table}
\begin{figure}[!ht]
\centering
\includegraphics[width=.70\textwidth]{res/explicit_theta}
\caption{Odhad parametrov $\theta$ ARX modelu metódou ELSq}
\label{fig:xplicittheta}
\end{figure}
% \newpage
\subsubsection{Chyba predikcie}
\begin{figure}[!ht]
\centering
\includegraphics[width=.68\textwidth]{res/explicit_error}
\caption{Chyba predikcie parametrov $\hat{e}$ ARX modelu metódou ELSq}
\label{fig:expliciterror}
\end{figure}
\newpage
\subsection{Porovnanie s Matlabovskou funkciou \texttt{c2dm}}
\begin{figure}[h]
\centering
\begin{varwidth}{\linewidth}
\begin{verbatim}
>> % matlab cmd prompt
>> [n, d] = c2dm(1, [2 5 1], 1, 'zoh');
\end{verbatim}
\end{varwidth}
\caption{Analyticky vypočítané parametre diskrétneho modelu zo spojitého
modelu pomocou \texttt{c2dm}}
\end{figure}
\begin{table}[!hbt]
\centering
\begin{tabular}{r|ccc}
\textbf{$n$} & 0 & 0.1223 & 0.0544 \\
\textbf{$d$} & 1.0000 & -0.9053 & 0.0821 \\
\end{tabular}
\caption{Parametre získané pomocou \texttt{c2dm(1, [2 5 1], 1, 'zoh')}}
\label{table:explicittheta}
\end{table}
\newpage
\section{Záver}