public void sort(){ List<FeatureItem> items = convert2SortedFeatureNodeArray(this); assert items.size() == this.idx.length; this.idx = new int[items.size()]; this.value = new double[items.size()]; for(int i =0; i < items.size(); i ++){ this.idx[i] = items.get(i).index; this.value[i] = items.get(i).value; } } }
/** * return a new vector for (a-b) * * @param a * @param b * @return */ public static FeatureVector minus(FeatureVector a, FeatureVector b) { FeatureVector fv = null; List<FeatureItem> af = convert2SortedFeatureNodeArray(a); List<FeatureItem> bf = convert2SortedFeatureNodeArray(b); Pair<int[], double[]> p = minus(af, bf); fv = new FeatureVector(p.getFirst(), p.getSecond()); return fv; }
/** * return a new feature vector for a + b * * @param a * @param b * @return */ public static FeatureVector plus(FeatureVector a, FeatureVector b) { FeatureVector fv = null; List<FeatureItem> af = convert2SortedFeatureNodeArray(a); List<FeatureItem> bf = convert2SortedFeatureNodeArray(b); Pair<int[], double[]> p = plus(af, bf); fv = new FeatureVector(p.getFirst(), p.getSecond()); return fv; }