public static FeatureMatrix crossProduct(FeatureVector fv1, FeatureVector fv2){
        if(fv1==null||fv2==null) return null;
        FeatureMatrix fm = new FeatureMatrix();
        Iterator<Integer> it_row = fv1.getKey();
        while(it_row.hasNext()){
            int row_id = it_row.next();
            Iterator<Integer> it_col = fv2.getKey();
            while(it_col.hasNext()){
                int col_id = it_col.next();
                double value = fv1.get(row_id)*fv2.get(col_id);
                fm.addBlock(row_id,col_id,value);
            }
        }
        return fm;
    }