diff --git a/include/DataImage.hpp b/include/DataImage.hpp index ed04169..4eff635 100644 --- a/include/DataImage.hpp +++ b/include/DataImage.hpp @@ -381,28 +381,29 @@ class DataImage{ return kernel; }; - static inline DataImage offsetKernel4categories(DataImage ¤tKernel, std::vector factor){ + static inline DataImage offsetKernel4categories(DataImage ¤tKernel, std::vector factor, bool needXMesurement=false){ unsigned cumulated=0; for (size_t i = 0; i < factor.size(); ++i) { - cumulated+=factor[i]; + cumulated+=factor[i]+( (factor[i]>1) && needXMesurement ); } DataImage kernel=DataImage(currentKernel._dims.size(),currentKernel._dims.data(),cumulated); - + unsigned currentPosition=0; for (size_t i = 0; i < factor.size(); ++i) { - for (unsigned int j = 0; j < factor[i]; ++j) + for (unsigned int j = 0; j < factor[i]+((factor[i]>1) && needXMesurement); ++j) { for (unsigned int k = 0; k < currentKernel.dataSize()/currentKernel._nbVariable; ++k) { - kernel._data[k*cumulated+currentPosition]=currentKernel._data[k*currentKernel._nbVariable+i]; + kernel._data[k*kernel._nbVariable+currentPosition]=currentKernel._data[k*currentKernel._nbVariable+i]; } currentPosition++; } + } return kernel; diff --git a/src/qs.cpp b/src/qs.cpp index f609b57..cd9e449 100644 --- a/src/qs.cpp +++ b/src/qs.cpp @@ -986,7 +986,7 @@ int main(int argc, char const *argv[]) { // correct the kernel to take in account categories for (int i = 0; i < kernels.size(); ++i) { - kernels[i]=g2s::DataImage::offsetKernel4categories(kernels[i],numberDeComputedVariableProVariable); + kernels[i]=g2s::DataImage::offsetKernel4categories(kernels[i],numberDeComputedVariableProVariable,needCrossMesurement); } std::vector > convertionTypeVectorMainVector;