# Input Data

The FactorGraph package requires knowledge about the joint probability density function $g(\mathcal{X})$ of the set of random variables $\mathcal{X} = \{x_1,\dots,x_n\}$ that can be factorised proportionally ($\propto$) to a product of local functions:

\[ g(\mathcal{X}) \propto \prod_{i=1}^m \psi_i(\mathcal{X}_i).\]

The FactorGraph package supports continuous random variables, where local function $\psi_i(\mathcal{X}_i)$ is defined as a continuous Gaussian distribution:

\[ \mathcal{N}(z_i|\mathcal{X}_i,v_i) \propto \exp\Bigg\{-\cfrac{[z_i-h_i(\mathcal{X}_i)]^2}{2v_i}\Bigg\}.\]

Hence, the local function is associated with observation $z_i$, variance $v_i$, and linear equation $h_i(\mathcal{X}_i)$. To describe the joint probability density function $g(\mathcal{X})$, it is enough to define the coefficient matrix containing coefficients of the equations, and vectors of observation and variance values. Then, the $i$-th row of the coefficient matrix, with consistent entries of observation and variance, defines the local function $\psi_i(\mathcal{X}_i)$.

Thus, the input data structure includes the `coefficient`

variable which describes coefficients of the equations, while variables `observation`

and `variance`

represent observation and variance vectors, respectively. The functions `continuousModel()`

and `continuousTreeModel()`

accept variables `coefficient`

, `observation`

and `variance`

.

#### Build the graphical model

Let us observe the following joint probability density function:

\[ g(\mathcal{X}) \propto \exp\Bigg\{-\cfrac{[2.5 - 0.2x_1]^2}{2\cdot 1.1}\Bigg\}\exp\Bigg\{-\cfrac{[0.6 - (2.1x_1 + 3.4x_2)]^2}{2\cdot 3.5}\Bigg\}\]

We can describe the joint probability density function using variables `coefficient`

, `observation`

and `variance`

. Passing data directly via command-line support the following format, where the coefficient matrix can be defined as a full or sparse matrix:

```
coefficient = zeros(2, 2)
coefficient[1, 1] = 0.2; coefficient[2, 1] = 2.1; coefficient[2, 2] = 3.4
observation = [2.5; 0.6]
variance = [1.1; 3.5]
gbp = continuousModel(coefficient, observation, variance)
```

Here, the variable `gbp`

holds the main composite type related to the continuous model. In the case of a tree factor graph, when you want to use a forward-backward GBP algorithm, then the following command can be used:

`gbp = continuousTreeModel(coefficient, observation, variance)`