public void ConstructorTest3()
{
double[,] A = new double[,]
{
{ 0.5, 0.5 },
{ 0.5, 0.5 }
};
double[] pi = new double[] { 1, 0 };
MultivariateNormalDistribution[] emissions =
{
new MultivariateNormalDistribution(new[] { 0.0, 0.1 }, new[,] { {1.0, 0.0}, {1.0, 5.1} }),
new MultivariateNormalDistribution(new[] { 2.0, 0.0 }, new[,] { {1.1, 0.1}, {1.0, 6.0} }),
};
var hmm = new HiddenMarkovModel<MultivariateNormalDistribution>(A, emissions, pi);
for (int i = 0; i < hmm.Emissions.Length; i++)
{
IDistribution b = hmm.Emissions[i];
IDistribution e = emissions[i];
Assert.AreEqual(b, e);
}
A = A.Log();
pi = pi.Log();
Assert.AreEqual(2, hmm.States);
Assert.AreEqual(2, hmm.Dimension);
Assert.AreEqual(2, hmm.Emissions.Length);
Assert.IsTrue(A.IsEqual(hmm.Transitions));
Assert.IsTrue(pi.IsEqual(hmm.Probabilities));
}