root/doc/latex/classEKFCh__cond.tex @ 258

Revision 255, 16.5 kB (checked in by smidl, 16 years ago)

doc

  • Property svn:eol-style set to native
Line 
1\hypertarget{classEKFCh__cond}{
2\section{EKFCh\_\-cond Class Reference}
3\label{classEKFCh__cond}\index{EKFCh\_\-cond@{EKFCh\_\-cond}}
4}
5Extended Kalman filter with unknown {\tt Q}
6
7
8Inheritance diagram for EKFCh\_\-cond:\nopagebreak
9\begin{figure}[H]
10\begin{center}
11\leavevmode
12\includegraphics[width=124pt]{classEKFCh__cond__inherit__graph}
13\end{center}
14\end{figure}
15Collaboration diagram for EKFCh\_\-cond:\nopagebreak
16\begin{figure}[H]
17\begin{center}
18\leavevmode
19\includegraphics[width=400pt]{classEKFCh__cond__coll__graph}
20\end{center}
21\end{figure}
22\subsection*{Public Member Functions}
23\begin{CompactItemize}
24\item 
25\hypertarget{classEKFCh__cond_727af5503bba3063c115994dd6adb059}{
26\hyperlink{classEKFCh__cond_727af5503bba3063c115994dd6adb059}{EKFCh\_\-cond} (\hyperlink{classbdm_1_1RV}{RV} rx, \hyperlink{classbdm_1_1RV}{RV} ry, \hyperlink{classbdm_1_1RV}{RV} ru, \hyperlink{classbdm_1_1RV}{RV} rC)}
27\label{classEKFCh__cond_727af5503bba3063c115994dd6adb059}
28
29\begin{CompactList}\small\item\em Default constructor. \item\end{CompactList}\item 
30\hypertarget{classEKFCh__cond_93ccb6731b68f28e0fb43393d8c66e1d}{
31void \hyperlink{classEKFCh__cond_93ccb6731b68f28e0fb43393d8c66e1d}{condition} (const vec \&val)}
32\label{classEKFCh__cond_93ccb6731b68f28e0fb43393d8c66e1d}
33
34\begin{CompactList}\small\item\em Substitute {\tt val} for {\tt rvc}. \item\end{CompactList}\item 
35\hypertarget{classbdm_1_1EKFCh_50f9fbffad721f35e5ccb75d0f6b842a}{
36void \hyperlink{classbdm_1_1EKFCh_50f9fbffad721f35e5ccb75d0f6b842a}{set\_\-parameters} (diffbifn $\ast$\hyperlink{classbdm_1_1EKFCh_e1e895f994398a55bc425551fc275ba3}{pfxu}, diffbifn $\ast$\hyperlink{classbdm_1_1EKFCh_6b34c69641826322467b704e8252f317}{phxu}, const \hyperlink{classchmat}{chmat} Q0, const \hyperlink{classchmat}{chmat} R0)}
37\label{classbdm_1_1EKFCh_50f9fbffad721f35e5ccb75d0f6b842a}
38
39\begin{CompactList}\small\item\em Set nonlinear functions for mean values and covariance matrices. \item\end{CompactList}\item 
40\hypertarget{classbdm_1_1KalmanCh_ab3a87ba1831e53f193a9dfbaf56a879}{
41void \hyperlink{classbdm_1_1KalmanCh_ab3a87ba1831e53f193a9dfbaf56a879}{set\_\-parameters} (const mat \&A0, const mat \&B0, const mat \&C0, const mat \&D0, const \hyperlink{classchmat}{chmat} \&R0, const \hyperlink{classchmat}{chmat} \&Q0)}
42\label{classbdm_1_1KalmanCh_ab3a87ba1831e53f193a9dfbaf56a879}
43
44\begin{CompactList}\small\item\em Set parameters with check of relevance. \item\end{CompactList}\item 
45\hypertarget{classbdm_1_1EKFCh_4c8609c37290b158f88a31dae4047225}{
46void \hyperlink{classbdm_1_1EKFCh_4c8609c37290b158f88a31dae4047225}{bayes} (const vec \&dt)}
47\label{classbdm_1_1EKFCh_4c8609c37290b158f88a31dae4047225}
48
49\begin{CompactList}\small\item\em Here dt = \mbox{[}yt;ut\mbox{]} of appropriate dimensions. \item\end{CompactList}\item 
50\hypertarget{classbdm_1_1KalmanCh_f559387dd38bd6002be490cc62987290}{
51void \hyperlink{classbdm_1_1KalmanCh_f559387dd38bd6002be490cc62987290}{set\_\-est} (const vec \&mu0, const \hyperlink{classchmat}{chmat} \&P0)}
52\label{classbdm_1_1KalmanCh_f559387dd38bd6002be490cc62987290}
53
54\begin{CompactList}\small\item\em Set estimate values, used e.g. in initialization. \item\end{CompactList}\item 
55\hypertarget{classbdm_1_1Kalman_93b5936ba397f13c05f52885c545f42d}{
56const epdf \& \hyperlink{classbdm_1_1Kalman_93b5936ba397f13c05f52885c545f42d}{\_\-epdf} () const }
57\label{classbdm_1_1Kalman_93b5936ba397f13c05f52885c545f42d}
58
59\begin{CompactList}\small\item\em access function \item\end{CompactList}\item 
60\hypertarget{classbdm_1_1Kalman_c34989b1e53c7d4ecdaea63a95ddbd77}{
61const enorm$<$ \hyperlink{classchmat}{chmat} $>$ $\ast$ \hyperlink{classbdm_1_1Kalman_c34989b1e53c7d4ecdaea63a95ddbd77}{\_\-e} () const }
62\label{classbdm_1_1Kalman_c34989b1e53c7d4ecdaea63a95ddbd77}
63
64\begin{CompactList}\small\item\em Returns a pointer to the epdf representing posterior density on parameters. Use with care! \item\end{CompactList}\item 
65\hypertarget{classbdm_1_1Kalman_c788ec6e6c6f5f5861ae8a56d8ede277}{
66mat \& \hyperlink{classbdm_1_1Kalman_c788ec6e6c6f5f5861ae8a56d8ede277}{\_\-\_\-K} ()}
67\label{classbdm_1_1Kalman_c788ec6e6c6f5f5861ae8a56d8ede277}
68
69\begin{CompactList}\small\item\em access function \item\end{CompactList}\item 
70\hypertarget{classbdm_1_1Kalman_a250d1dbe7bba861dba2a324520cfa48}{
71vec \hyperlink{classbdm_1_1Kalman_a250d1dbe7bba861dba2a324520cfa48}{\_\-dP} ()}
72\label{classbdm_1_1Kalman_a250d1dbe7bba861dba2a324520cfa48}
73
74\begin{CompactList}\small\item\em access function \item\end{CompactList}\item 
75\hypertarget{classbdm_1_1BM_1dee3fddaf021e62d925289660a707dc}{
76virtual void \hyperlink{classbdm_1_1BM_1dee3fddaf021e62d925289660a707dc}{bayesB} (const mat \&Dt)}
77\label{classbdm_1_1BM_1dee3fddaf021e62d925289660a707dc}
78
79\begin{CompactList}\small\item\em Batch Bayes rule (columns of Dt are observations). \item\end{CompactList}\item 
80virtual double \hyperlink{classbdm_1_1BM_50257e0c1e5b5c73153ea6e716ad8ae0}{logpred} (const vec \&dt) const
81\item 
82\hypertarget{classbdm_1_1BM_0e8ebe61fb14990abe1254bd3dda5fae}{
83vec \hyperlink{classbdm_1_1BM_0e8ebe61fb14990abe1254bd3dda5fae}{logpred\_\-m} (const mat \&dt) const }
84\label{classbdm_1_1BM_0e8ebe61fb14990abe1254bd3dda5fae}
85
86\begin{CompactList}\small\item\em Matrix version of logpred. \item\end{CompactList}\item 
87\hypertarget{classbdm_1_1BM_710e7d69c0d8791fb41a7cd4683cca2c}{
88virtual epdf $\ast$ \hyperlink{classbdm_1_1BM_710e7d69c0d8791fb41a7cd4683cca2c}{predictor} (const RV \&\hyperlink{classbdm_1_1BM_18d6db4af8ee42077741d9e3618153ca}{rv}) const }
89\label{classbdm_1_1BM_710e7d69c0d8791fb41a7cd4683cca2c}
90
91\begin{CompactList}\small\item\em Constructs a predictive density (marginal density on data). \item\end{CompactList}\item 
92\hypertarget{classbdm_1_1BM_40a3c891996391e3135518053a917793}{
93const RV \& \hyperlink{classbdm_1_1BM_40a3c891996391e3135518053a917793}{\_\-rv} () const }
94\label{classbdm_1_1BM_40a3c891996391e3135518053a917793}
95
96\begin{CompactList}\small\item\em access function \item\end{CompactList}\item 
97\hypertarget{classbdm_1_1BM_5be65d37dedfe33a3671e7065f523a70}{
98double \hyperlink{classbdm_1_1BM_5be65d37dedfe33a3671e7065f523a70}{\_\-ll} () const }
99\label{classbdm_1_1BM_5be65d37dedfe33a3671e7065f523a70}
100
101\begin{CompactList}\small\item\em access function \item\end{CompactList}\item 
102\hypertarget{classbdm_1_1BM_236b3abbcc93594fc97cd86d82c1a83f}{
103void \hyperlink{classbdm_1_1BM_236b3abbcc93594fc97cd86d82c1a83f}{set\_\-evalll} (bool evl0)}
104\label{classbdm_1_1BM_236b3abbcc93594fc97cd86d82c1a83f}
105
106\begin{CompactList}\small\item\em access function \item\end{CompactList}\item 
107virtual BM $\ast$ \hyperlink{classbdm_1_1BM_3efb3098172f1f67564a312fe732473e}{\_\-copy\_\-} (bool changerv=false)
108\item 
109\hypertarget{classbdm_1_1BMcond_7506910f93250b44fea505ec4ffb19dc}{
110const RV \& \hyperlink{classbdm_1_1BMcond_7506910f93250b44fea505ec4ffb19dc}{\_\-rvc} () const }
111\label{classbdm_1_1BMcond_7506910f93250b44fea505ec4ffb19dc}
112
113\begin{CompactList}\small\item\em access function \item\end{CompactList}\end{CompactItemize}
114\subsection*{Protected Attributes}
115\begin{CompactItemize}
116\item 
117\hypertarget{classbdm_1_1EKFCh_e1e895f994398a55bc425551fc275ba3}{
118diffbifn $\ast$ \hyperlink{classbdm_1_1EKFCh_e1e895f994398a55bc425551fc275ba3}{pfxu}}
119\label{classbdm_1_1EKFCh_e1e895f994398a55bc425551fc275ba3}
120
121\begin{CompactList}\small\item\em Internal Model f(x,u). \item\end{CompactList}\item 
122\hypertarget{classbdm_1_1EKFCh_6b34c69641826322467b704e8252f317}{
123diffbifn $\ast$ \hyperlink{classbdm_1_1EKFCh_6b34c69641826322467b704e8252f317}{phxu}}
124\label{classbdm_1_1EKFCh_6b34c69641826322467b704e8252f317}
125
126\begin{CompactList}\small\item\em Observation Model h(x,u). \item\end{CompactList}\item 
127\hypertarget{classbdm_1_1KalmanCh_48611c8582706cfa62e832be0972e75d}{
128mat \hyperlink{classbdm_1_1KalmanCh_48611c8582706cfa62e832be0972e75d}{preA}}
129\label{classbdm_1_1KalmanCh_48611c8582706cfa62e832be0972e75d}
130
131\begin{CompactList}\small\item\em pre array (triangular matrix) \item\end{CompactList}\item 
132\hypertarget{classbdm_1_1KalmanCh_bcbd68f51d4b57246e7784ca5900171f}{
133mat \hyperlink{classbdm_1_1KalmanCh_bcbd68f51d4b57246e7784ca5900171f}{postA}}
134\label{classbdm_1_1KalmanCh_bcbd68f51d4b57246e7784ca5900171f}
135
136\begin{CompactList}\small\item\em post array (triangular matrix) \item\end{CompactList}\item 
137\hypertarget{classbdm_1_1Kalman_3fe475a1e920b20b63bb342c0e1571f7}{
138RV \hyperlink{classbdm_1_1Kalman_3fe475a1e920b20b63bb342c0e1571f7}{rvy}}
139\label{classbdm_1_1Kalman_3fe475a1e920b20b63bb342c0e1571f7}
140
141\begin{CompactList}\small\item\em Indetifier of output rv. \item\end{CompactList}\item 
142\hypertarget{classbdm_1_1Kalman_149e27424fd1a7cc1c998ea088618a94}{
143RV \hyperlink{classbdm_1_1Kalman_149e27424fd1a7cc1c998ea088618a94}{rvu}}
144\label{classbdm_1_1Kalman_149e27424fd1a7cc1c998ea088618a94}
145
146\begin{CompactList}\small\item\em Indetifier of exogeneous rv. \item\end{CompactList}\item 
147\hypertarget{classbdm_1_1Kalman_ba7699cdb3b1382a54d3e28b9b7517fa}{
148int \hyperlink{classbdm_1_1Kalman_ba7699cdb3b1382a54d3e28b9b7517fa}{dimx}}
149\label{classbdm_1_1Kalman_ba7699cdb3b1382a54d3e28b9b7517fa}
150
151\begin{CompactList}\small\item\em cache of rv.count() \item\end{CompactList}\item 
152\hypertarget{classbdm_1_1Kalman_d2c36ba01760bf207b985bf321b7817f}{
153int \hyperlink{classbdm_1_1Kalman_d2c36ba01760bf207b985bf321b7817f}{dimy}}
154\label{classbdm_1_1Kalman_d2c36ba01760bf207b985bf321b7817f}
155
156\begin{CompactList}\small\item\em cache of rvy.count() \item\end{CompactList}\item 
157\hypertarget{classbdm_1_1Kalman_c5136ef617f6ac0e426bea222755d92b}{
158int \hyperlink{classbdm_1_1Kalman_c5136ef617f6ac0e426bea222755d92b}{dimu}}
159\label{classbdm_1_1Kalman_c5136ef617f6ac0e426bea222755d92b}
160
161\begin{CompactList}\small\item\em cache of rvu.count() \item\end{CompactList}\item 
162\hypertarget{classbdm_1_1Kalman_0a2072e2090c10fac74ad30a023a4ace}{
163mat \hyperlink{classbdm_1_1Kalman_0a2072e2090c10fac74ad30a023a4ace}{A}}
164\label{classbdm_1_1Kalman_0a2072e2090c10fac74ad30a023a4ace}
165
166\begin{CompactList}\small\item\em Matrix A. \item\end{CompactList}\item 
167\hypertarget{classbdm_1_1Kalman_5977b2c81857948a35105f0e7840203c}{
168mat \hyperlink{classbdm_1_1Kalman_5977b2c81857948a35105f0e7840203c}{B}}
169\label{classbdm_1_1Kalman_5977b2c81857948a35105f0e7840203c}
170
171\begin{CompactList}\small\item\em Matrix B. \item\end{CompactList}\item 
172\hypertarget{classbdm_1_1Kalman_818eba63a23972786a4579ad30294177}{
173mat \hyperlink{classbdm_1_1Kalman_818eba63a23972786a4579ad30294177}{C}}
174\label{classbdm_1_1Kalman_818eba63a23972786a4579ad30294177}
175
176\begin{CompactList}\small\item\em Matrix C. \item\end{CompactList}\item 
177\hypertarget{classbdm_1_1Kalman_7b56ac423d0654b5755e4f852a870456}{
178mat \hyperlink{classbdm_1_1Kalman_7b56ac423d0654b5755e4f852a870456}{D}}
179\label{classbdm_1_1Kalman_7b56ac423d0654b5755e4f852a870456}
180
181\begin{CompactList}\small\item\em Matrix D. \item\end{CompactList}\item 
182\hypertarget{classbdm_1_1Kalman_70f8bf19e81b532c60fd3a7a152425ee}{
183\hyperlink{classchmat}{chmat} \hyperlink{classbdm_1_1Kalman_70f8bf19e81b532c60fd3a7a152425ee}{Q}}
184\label{classbdm_1_1Kalman_70f8bf19e81b532c60fd3a7a152425ee}
185
186\begin{CompactList}\small\item\em Matrix Q in square-root form. \item\end{CompactList}\item 
187\hypertarget{classbdm_1_1Kalman_475b088287cdfbba4dc60a3d027728b7}{
188\hyperlink{classchmat}{chmat} \hyperlink{classbdm_1_1Kalman_475b088287cdfbba4dc60a3d027728b7}{R}}
189\label{classbdm_1_1Kalman_475b088287cdfbba4dc60a3d027728b7}
190
191\begin{CompactList}\small\item\em Matrix R in square-root form. \item\end{CompactList}\item 
192\hypertarget{classbdm_1_1Kalman_383f329ff18bbe219254c8b3b916f40d}{
193enorm$<$ \hyperlink{classchmat}{chmat} $>$ \hyperlink{classbdm_1_1Kalman_383f329ff18bbe219254c8b3b916f40d}{est}}
194\label{classbdm_1_1Kalman_383f329ff18bbe219254c8b3b916f40d}
195
196\begin{CompactList}\small\item\em posterior density on \$x\_\-t\$ \item\end{CompactList}\item 
197\hypertarget{classbdm_1_1Kalman_ba555c394c429f6831c9bbabfa2c944c}{
198enorm$<$ \hyperlink{classchmat}{chmat} $>$ \hyperlink{classbdm_1_1Kalman_ba555c394c429f6831c9bbabfa2c944c}{fy}}
199\label{classbdm_1_1Kalman_ba555c394c429f6831c9bbabfa2c944c}
200
201\begin{CompactList}\small\item\em preditive density on \$y\_\-t\$ \item\end{CompactList}\item 
202\hypertarget{classbdm_1_1Kalman_bd69dfb802465f22dd84d73a180d5c92}{
203mat \hyperlink{classbdm_1_1Kalman_bd69dfb802465f22dd84d73a180d5c92}{\_\-K}}
204\label{classbdm_1_1Kalman_bd69dfb802465f22dd84d73a180d5c92}
205
206\begin{CompactList}\small\item\em placeholder for Kalman gain \item\end{CompactList}\item 
207\hypertarget{classbdm_1_1Kalman_c249d45258c8578b13858ad3e7b729b1}{
208vec \& \hyperlink{classbdm_1_1Kalman_c249d45258c8578b13858ad3e7b729b1}{\_\-yp}}
209\label{classbdm_1_1Kalman_c249d45258c8578b13858ad3e7b729b1}
210
211\begin{CompactList}\small\item\em cache of fy.mu \item\end{CompactList}\item 
212\hypertarget{classbdm_1_1Kalman_2dd268f2d7fbe6382cb8825a1114192a}{
213\hyperlink{classchmat}{chmat} \& \hyperlink{classbdm_1_1Kalman_2dd268f2d7fbe6382cb8825a1114192a}{\_\-Ry}}
214\label{classbdm_1_1Kalman_2dd268f2d7fbe6382cb8825a1114192a}
215
216\begin{CompactList}\small\item\em cache of fy.R \item\end{CompactList}\item 
217\hypertarget{classbdm_1_1Kalman_fa172078091e45561343fa513dd573b0}{
218vec \& \hyperlink{classbdm_1_1Kalman_fa172078091e45561343fa513dd573b0}{\_\-mu}}
219\label{classbdm_1_1Kalman_fa172078091e45561343fa513dd573b0}
220
221\begin{CompactList}\small\item\em cache of est.mu \item\end{CompactList}\item 
222\hypertarget{classbdm_1_1Kalman_00c27b0bf324f0018497921ca23c71ed}{
223\hyperlink{classchmat}{chmat} \& \hyperlink{classbdm_1_1Kalman_00c27b0bf324f0018497921ca23c71ed}{\_\-P}}
224\label{classbdm_1_1Kalman_00c27b0bf324f0018497921ca23c71ed}
225
226\begin{CompactList}\small\item\em cache of est.R \item\end{CompactList}\item 
227\hypertarget{classbdm_1_1BM_18d6db4af8ee42077741d9e3618153ca}{
228RV \hyperlink{classbdm_1_1BM_18d6db4af8ee42077741d9e3618153ca}{rv}}
229\label{classbdm_1_1BM_18d6db4af8ee42077741d9e3618153ca}
230
231\begin{CompactList}\small\item\em Random variable of the posterior. \item\end{CompactList}\item 
232\hypertarget{classbdm_1_1BM_4064b6559d962633e4372b12f4cd204a}{
233double \hyperlink{classbdm_1_1BM_4064b6559d962633e4372b12f4cd204a}{ll}}
234\label{classbdm_1_1BM_4064b6559d962633e4372b12f4cd204a}
235
236\begin{CompactList}\small\item\em Logarithm of marginalized data likelihood. \item\end{CompactList}\item 
237\hypertarget{classbdm_1_1BM_faff0ad12556fe7dc0e2807d4fd938ee}{
238bool \hyperlink{classbdm_1_1BM_faff0ad12556fe7dc0e2807d4fd938ee}{evalll}}
239\label{classbdm_1_1BM_faff0ad12556fe7dc0e2807d4fd938ee}
240
241\begin{CompactList}\small\item\em If true, the filter will compute likelihood of the data record and store it in {\tt ll} . Set to false if you want to save computational time. \item\end{CompactList}\item 
242\hypertarget{classbdm_1_1BMcond_9a12750776d977408aada06a70093297}{
243RV \hyperlink{classbdm_1_1BMcond_9a12750776d977408aada06a70093297}{rvc}}
244\label{classbdm_1_1BMcond_9a12750776d977408aada06a70093297}
245
246\begin{CompactList}\small\item\em Identificator of the conditioning variable. \item\end{CompactList}\end{CompactItemize}
247
248
249\subsection{Detailed Description}
250Extended Kalman filter with unknown {\tt Q}.
251
252\subsection{Member Function Documentation}
253\hypertarget{classbdm_1_1BM_50257e0c1e5b5c73153ea6e716ad8ae0}{
254\index{EKFCh\_\-cond@{EKFCh\_\-cond}!logpred@{logpred}}
255\index{logpred@{logpred}!EKFCh_cond@{EKFCh\_\-cond}}
256\subsubsection[logpred]{\setlength{\rightskip}{0pt plus 5cm}virtual double bdm::BM::logpred (const vec \& {\em dt}) const\hspace{0.3cm}{\tt  \mbox{[}inline, virtual, inherited\mbox{]}}}}
257\label{classbdm_1_1BM_50257e0c1e5b5c73153ea6e716ad8ae0}
258
259
260Evaluates predictive log-likelihood of the given data record I.e. marginal likelihood of the data with the posterior integrated out.
261
262Reimplemented in \hyperlink{classbdm_1_1ARX_080a7e531e3aa06694112863b15bc6a4}{bdm::ARX}, \hyperlink{classbdm_1_1MixEF_da724da464a75e07521941e430929efa}{bdm::MixEF}, and \hyperlink{classbdm_1_1multiBM_e157b607c1e3fa91d42aeea44458e2bf}{bdm::multiBM}.
263
264Referenced by bdm::BM::logpred\_\-m().\hypertarget{classbdm_1_1BM_3efb3098172f1f67564a312fe732473e}{
265\index{EKFCh\_\-cond@{EKFCh\_\-cond}!\_\-copy\_\-@{\_\-copy\_\-}}
266\index{\_\-copy\_\-@{\_\-copy\_\-}!EKFCh_cond@{EKFCh\_\-cond}}
267\subsubsection[\_\-copy\_\-]{\setlength{\rightskip}{0pt plus 5cm}virtual BM$\ast$ bdm::BM::\_\-copy\_\- (bool {\em changerv} = {\tt false})\hspace{0.3cm}{\tt  \mbox{[}inline, virtual, inherited\mbox{]}}}}
268\label{classbdm_1_1BM_3efb3098172f1f67564a312fe732473e}
269
270
271Copy function required in vectors, Arrays of \hyperlink{classbdm_1_1BM}{BM} etc. Have to be DELETED manually! Prototype: BM$\ast$ \hyperlink{classbdm_1_1BM_3efb3098172f1f67564a312fe732473e}{\_\-copy\_\-()}\{\hyperlink{classbdm_1_1BM}{BM} Tmp$\ast$=new Tmp(this$\ast$); return Tmp; \} 
272
273Reimplemented in \hyperlink{classbdm_1_1ARX_20ff2de8d862f28de7da83444d65bcdb}{bdm::ARX}, and \hyperlink{classbdm_1_1BMEF_5912dbcf28ae711e30b08c2fa766a3e6}{bdm::BMEF}.
274
275The documentation for this class was generated from the following file:\begin{CompactItemize}
276\item 
277work/git/mixpp/pmsm/\hyperlink{mpf__u__weight_8cpp}{mpf\_\-u\_\-weight.cpp}\end{CompactItemize}
Note: See TracBrowser for help on using the browser.