public void ConstructorTest2()
{
double[,] A = new double[,]
{
{ 0.5, 0.5 },
{ 0.5, 0.5 }
};
double[] pi = new double[] { 1, 0 };
var distribution = new MultivariateNormalDistribution(3);
var hmm = new HiddenMarkovModel<MultivariateNormalDistribution>(2, distribution);
for (int i = 0; i < hmm.Emissions.Length; i++)
{
IDistribution b = hmm.Emissions[i];
Assert.AreNotSame(distribution, b);
Assert.IsTrue(b is MultivariateNormalDistribution);
MultivariateNormalDistribution n = b as MultivariateNormalDistribution;
Assert.AreEqual(n.Dimension, hmm.Dimension);
Assert.AreNotSame(n.Covariance, distribution.Covariance);
Assert.IsTrue(n.Covariance.IsEqual(distribution.Covariance));
Assert.AreNotSame(n.Mean, distribution.Mean);
Assert.IsTrue(n.Mean.IsEqual(distribution.Mean));
}
Assert.AreEqual(2, hmm.States);
Assert.AreEqual(3, hmm.Dimension);
Assert.AreEqual(2, hmm.Emissions.Length);
var logA = Matrix.Log(A);
var logPi = Matrix.Log(pi);
Assert.IsTrue(logA.IsEqual(hmm.Transitions));
Assert.IsTrue(logPi.IsEqual(hmm.Probabilities));
}