From 7e1fe7fffb30f52f850e61b8efb9ea7667875ee6 Mon Sep 17 00:00:00 2001 From: Mathieu Gravey Date: Fri, 25 Oct 2024 15:56:37 +0200 Subject: [PATCH] experimental fix --- include/DataImage.hpp | 11 ++++++----- src/qs.cpp | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) 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;