tex,pics: add batch 1
After Width: | Height: | Size: 237 KiB |
After Width: | Height: | Size: 251 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 218 KiB |
After Width: | Height: | Size: 229 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 215 KiB |
265
solution.tex
|
@ -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}
|
||||
|
|