Files
mimis/vendor/wiigee/1.5.6/org/wiigee/logic/XHMM.java
2012-05-28 21:38:38 +02:00

86 lines
2.1 KiB
Java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.wiigee.logic;
import java.util.Vector;
/**
*
* @author bepo
*/
public class XHMM extends HMM {
// the temporal values for scaling
int[] currSequence;
double[][] currForward;
double[][] scaledForward;
double[][] currBackward;
double[][] scaledBackward;
double[] currScaling;
double[][] currHelper;
public XHMM(int numStates, int numObservations) {
super(numStates, numObservations);
}
@Override
public void train(Vector<int[]> trainsequence) {
}
private double[][] getScaledForward(int[] sequence) {
double[][] fwd = this.forwardProc(sequence);
double[][] retVal = new double[fwd.length][fwd[0].length];
for(int t=0; t<fwd.length; t++) {
for(int i=0; i<fwd[0].length; i++) {
// build sum
double sum = 0.0;
for(int n=0; n<this.numStates; n++) {
sum += fwd[t][n];
}
retVal[t][i] = fwd[t][i] / sum;
}
}
return retVal;
}
private double[][] getScaledBackward(int[] sequence) {
double[][] fwd = this.forwardProc(sequence);
double[][] bwd = this.backwardProc(sequence);
double[][] retVal = new double[bwd.length][bwd[0].length];
for(int t=0; t<bwd.length; t++) {
for(int i=0; i<bwd[0].length; i++) {
// build sum
double sum = 0.0;
for(int n=0; n<this.numStates; n++) {
sum += fwd[t][n];
}
retVal[t][i] = bwd[t][i] / sum;
}
}
return retVal;
}
private double getScalingDenominator(int t, int[] sequence) {
double retVal = 0.0;
double[][] fwd = this.forwardProc(sequence);
double[][] sfwd = this.getScaledForward(sequence);
double[][] helper = new double[sfwd.length][sfwd[0].length];
if(t==0) {
}
return retVal;
}
}