Update MatlabWriter.

This commit is contained in:
sunwen
2023-06-27 16:10:23 +08:00
parent 31d544d25c
commit d915f33264
2 changed files with 22 additions and 7 deletions

View File

@@ -1,5 +1,7 @@
#include "MatlabWriter.h" #include "MatlabWriter.h"
#include "Matrix.h"
#include <matio.h> #include <matio.h>
#include <utility>
MatlabWriter::MatlabWriter(const std::string& aFileName) MatlabWriter::MatlabWriter(const std::string& aFileName)
: mFileName(aFileName) : mFileName(aFileName)
@@ -12,11 +14,21 @@ MatlabWriter::~MatlabWriter()
Mat_Close(mMat); 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(); mMatrixs.insert(std::pair<std::string, Aurora::Matrix>(aName, aMatrixs));
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); void MatlabWriter::write()
Mat_VarFree(var); {
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);
}
} }

View File

@@ -2,6 +2,7 @@
#define MATLABWRITER_H #define MATLABWRITER_H
#include "Matrix.h" #include "Matrix.h"
#include <map>
#include <vector> #include <vector>
#include <matio.h> #include <matio.h>
@@ -10,11 +11,13 @@ class MatlabWriter
public: public:
MatlabWriter(const std::string& aFileName); MatlabWriter(const std::string& aFileName);
~MatlabWriter(); ~MatlabWriter();
void write(const Aurora::Matrix& aMatrixs, const std::string& aName); void write();
void setMatrix(const Aurora::Matrix& aMatrixs, const std::string& aName);
private: private:
std::string mFileName; std::string mFileName;
mat_t* mMat; mat_t* mMat;
std::map<std::string , Aurora::Matrix> mMatrixs;
}; };
#endif // MATLABWRITER_H #endif // MATLABWRITER_H