From d915f3326439f081cbec15d3832ef2855ac67c15 Mon Sep 17 00:00:00 2001 From: sunwen Date: Tue, 27 Jun 2023 16:10:23 +0800 Subject: [PATCH] Update MatlabWriter. --- src/MatlabWriter.cpp | 24 ++++++++++++++++++------ src/MatlabWriter.h | 5 ++++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/MatlabWriter.cpp b/src/MatlabWriter.cpp index 8985a4a..49bb18d 100644 --- a/src/MatlabWriter.cpp +++ b/src/MatlabWriter.cpp @@ -1,5 +1,7 @@ #include "MatlabWriter.h" +#include "Matrix.h" #include +#include MatlabWriter::MatlabWriter(const std::string& aFileName) : mFileName(aFileName) @@ -12,11 +14,21 @@ MatlabWriter::~MatlabWriter() Mat_Close(mMat); } -void MatlabWriter::write(const Aurora::Matrix& aMatrixs, const std::string& aName) +void MatlabWriter::setMatrix(const Aurora::Matrix& aMatrixs, const std::string& aName) { - int dimsSize = aMatrixs.getDims(); - size_t dims[3] ={(size_t)aMatrixs.getDimSize(0),(size_t)aMatrixs.getDimSize(1), (size_t)aMatrixs.getDimSize(2)}; - matvar_t* var = Mat_VarCreate(aName.c_str(),MAT_C_DOUBLE,MAT_T_DOUBLE,dimsSize,dims,aMatrixs.getData(),0); - Mat_VarWrite(mMat,var,MAT_COMPRESSION_NONE); - Mat_VarFree(var); + mMatrixs.insert(std::pair(aName, aMatrixs)); +} + +void MatlabWriter::write() +{ + for(auto i= mMatrixs.begin(); i!=mMatrixs.end(); ++i) + { + Aurora::Matrix matrix = i->second; + std::string name = i->first; + int dimsSize = matrix.getDims(); + size_t dims[3] ={(size_t)matrix.getDimSize(0),(size_t)matrix.getDimSize(1), (size_t)matrix.getDimSize(2)}; + matvar_t* var = Mat_VarCreate(name.c_str(),MAT_C_DOUBLE,MAT_T_DOUBLE,dimsSize,dims,matrix.getData(),0); + Mat_VarWrite(mMat,var,MAT_COMPRESSION_NONE); + Mat_VarFree(var); + } } diff --git a/src/MatlabWriter.h b/src/MatlabWriter.h index 672957f..7996438 100644 --- a/src/MatlabWriter.h +++ b/src/MatlabWriter.h @@ -2,6 +2,7 @@ #define MATLABWRITER_H #include "Matrix.h" +#include #include #include @@ -10,11 +11,13 @@ class MatlabWriter public: MatlabWriter(const std::string& aFileName); ~MatlabWriter(); - void write(const Aurora::Matrix& aMatrixs, const std::string& aName); + void write(); + void setMatrix(const Aurora::Matrix& aMatrixs, const std::string& aName); private: std::string mFileName; mat_t* mMat; + std::map mMatrixs; }; #endif // MATLABWRITER_H