14 using namespace shogun;
18 SG_UNSTABLE(
"CWDFeatures::CWDFeatures() :CDotFeatures()",
57 degree(orig.degree), from_degree(orig.from_degree),
58 normalization_const(orig.normalization_const)
85 bool free_vec1, free_vec2;
88 uint8_t* vec2=wdf->strings->get_feature_vector(vec_idx2, len2, free_vec2);
94 for (int32_t i=0; i<len1; i++)
96 for (int32_t j=0; (i+j<len1) && (j<
degree); j++)
98 if (vec1[i+j]!=vec2[i+j])
104 wdf->strings->free_feature_vector(vec2, vec_idx2, free_vec2);
110 if (vec2_len !=
w_dim)
111 SG_ERROR(
"Dimensions don't match, vec2_dim=%d, w_dim=%d\n", vec2_len,
w_dim);
125 for (int32_t k=0; k<lim; k++)
130 for (int32_t i=0; i+k < len; i++)
132 val[i]+=asizem1*vec[i+k];
133 sum+=vec2[val[i]+o]*wd;
148 if (vec2_len !=
w_dim)
149 SG_ERROR(
"Dimensions don't match, vec2_dim=%d, w_dim=%d\n", vec2_len,
w_dim);
162 for (int32_t k=0; k<lim; k++)
170 for (int32_t i=0; i+k < len; i++)
172 val[i]+=asizem1*vec[i+k];
192 for (int32_t i=0; i<
degree; i++)
206 for (int32_t i=0; i<
degree; i++)
221 SG_ERROR(
"Index out of bounds (number of strings %d, you "
225 wd_feature_iterator* it=
SG_MALLOC(wd_feature_iterator, 1);
229 it->vidx=vector_index;
247 wd_feature_iterator* it=(wd_feature_iterator*) iterator;
249 if (it->i + it->k >= it->vlen)
251 if (it->k < it->lim-1)
253 it->offs+=it->asize*it->vlen;
266 #ifdef DEBUG_WDFEATURES
267 SG_PRINT(
"i=%d k=%d offs=%d o=%d asize=%d asizem1=%d\n", i, k, it->offs, it->o, it->asize, it->asizem1);
270 it->val[i]+=it->asizem1*it->vec[i+k];
272 index=it->val[i]+it->o;
273 #ifdef DEBUG_WDFEATURES
274 SG_PRINT(
"index=%d val=%f w_size=%d lim=%d vlen=%d\n", index, value,
w_dim, it->lim, it->vlen);
286 wd_feature_iterator* it=(wd_feature_iterator*) iterator;
340 for (int32_t i=0; i<
degree; i++)