/// <summary> /// EP message to 'subvector' /// </summary> /// <param name="SourceMean">Buffer 'SourceMean'.</param> /// <param name="SourceVariance">Buffer 'SourceVariance'.</param> /// <param name="startIndex">Constant value for 'startIndex'.</param> /// <param name="result">Modified to contain the outgoing message</param> /// <returns><paramref name="result"/></returns> /// <remarks><para> /// The outgoing message is the factor viewed as a function of 'subvector' conditioned on the given values. /// </para></remarks> public static VectorGaussian SubvectorAverageConditional([Fresh] Vector SourceMean, [Fresh] PositiveDefiniteMatrix SourceVariance, int startIndex, VectorGaussian result) { PositiveDefiniteMatrix subVariance = new PositiveDefiniteMatrix(result.Dimension, result.Dimension); subVariance.SetToSubmatrix(SourceVariance, startIndex, startIndex); Vector subMean = Vector.Zero(result.Dimension); subMean.SetToSubvector(SourceMean, startIndex); result.SetMeanAndVariance(subMean, subVariance); return(result); }
/// <summary> /// EP message to 'subvector' /// </summary> /// <param name="SourceMean">Buffer 'SourceMean'.</param> /// <param name="SourceVariance">Buffer 'SourceVariance'.</param> /// <param name="startIndex">Constant value for 'startIndex'.</param> /// <param name="result">Modified to contain the outgoing message</param> /// <returns><paramref name="result"/></returns> /// <remarks><para> /// The outgoing message is the factor viewed as a function of 'subvector' conditioned on the given values. /// </para></remarks> public static VectorGaussian SubvectorAverageConditional([Fresh] Vector SourceMean, [Fresh] PositiveDefiniteMatrix SourceVariance, int startIndex, VectorGaussian result) { PositiveDefiniteMatrix subVariance = new PositiveDefiniteMatrix(result.Dimension, result.Dimension); subVariance.SetToSubmatrix(SourceVariance, startIndex, startIndex); Vector subMean = Vector.Zero(result.Dimension); subMean.SetToSubvector(SourceMean, startIndex); result.SetMeanAndVariance(subMean, subVariance); return result; }