diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
index 2fbfad0e89159185d4481abde6fada3e9d79d14c..9b84c82045ae7ca1393a3c06861a3431a2c4fc8d 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
@@ -44,7 +44,7 @@ namespace armarx::aron::codegenerator::cpp::generator
             "Eigen::Matrix<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
             "Eigen::Matrix<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
             simox::meta::get_type_name<data::dto::NDArray>(),
-            simox::meta::get_type_name<type::dto::Matrix>(), n)
+            simox::meta::get_type_name<type::dto::Matrix>(), n), matrixType(n)
     {
     }
 
@@ -102,6 +102,13 @@ namespace armarx::aron::codegenerator::cpp::generator
         block_if_data->addLine("std::vector<int> " + dims + ";");
         block_if_data->addLine("std::vector<unsigned char> " + data + ";");
         block_if_data->addLine("" + ARON_READER_ACCESSOR + ".readNDArray("+variantAccessor+", "+dims+", "+type+", "+data+"); // of " + cppAccessor);
+        
+        if(matrixType.getRows() == Eigen::Dynamic or matrixType.getCols() == Eigen::Dynamic)
+        {
+            // TODO  assert(aron_variant_kpImpedance_shape.size() == 2);
+            block_if_data->addLine(cppAccessor + nextEl() + "resize(" + dims + ".at(0), " + dims + ".at(1));");
+        }
+
         block_if_data->addLine("std::memcpy(reinterpret_cast<unsigned char*>(" + cppAccessor + nextEl() + "data()), "+data+".data(), "+data+".size());");
         return resolveMaybeReadBlock(block_if_data, cppAccessor, variantAccessor);
     }
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
index 9f56f2b986f199af4e662e342b5f7dc7040d778b..8c8c246067941510770cbf07e440b514bffd6437 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
@@ -47,5 +47,8 @@ namespace armarx::aron::codegenerator::cpp::generator
         CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
         CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
         CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const final;
+
+    private:
+        const type::Matrix matrixType;
     };
 }