diff --git a/CommonLib/matlab_io.cpp b/CommonLib/matlab_io.cpp index 9558d2a..955713d 100644 --- a/CommonLib/matlab_io.cpp +++ b/CommonLib/matlab_io.cpp @@ -26,7 +26,7 @@ bool ReadMtxString(const string& filePath, const string& mtxName, pMatFile = matOpen(filePath.c_str(), "r"); //打开.mat文件 if (pMatFile == nullptr) { - cerr << "filePath is error!" << endl; + cout << "filePath is error!" << endl; return false; } pMxArray = matGetVariable(pMatFile, mtxName.c_str()); //获取.mat文件里面名为matrixName的矩阵 @@ -38,7 +38,7 @@ bool ReadMtxString(const string& filePath, const string& mtxName, for (int j = 0; j < colNum; ++j) { pCell = mxGetCell(pMxArray, j * rowNum + i); if (mxGetString(pCell, strBuf, STRING_BUF_SIZE) != 0) { - cerr << "String is too large to fit in the buffer! " << i + 1 << '\t' << j + 1 << endl; + cout << "String is too large to fit in the buffer! " << i + 1 << '\t' << j + 1 << endl; return false; } vStr[i * colNum + j] = strBuf; @@ -57,7 +57,7 @@ T* ReadMtxDouble(const string& filePath, const string& mtxName, int* pRowNum, in double* matData; pMatFile = matOpen(filePath.c_str(), "r"); //打开.mat文件 if (pMatFile == nullptr) { - cerr << "filePath is error!" << endl; + cout << "filePath is error!" << endl; return nullptr; } pMxArray = matGetVariable(pMatFile, mtxName.c_str()); //获取.mat文件里面名为matrixName的矩阵 @@ -90,7 +90,7 @@ bool SaveMtxDouble(T* src, MATFile* pMatFile, string matrixName, int rowNum, int // memset(mtxData, 0, datasize * sizeof(double)); if (pMatFile == nullptr) { - cerr << "mat file pointer is error!" << endl; + cout << "mat file pointer is error!" << endl; return false; } for (int i = 0; i < rowNum; i++) diff --git a/CppRun/main.cpp b/CppRun/main.cpp index 23aa9d7..0e63f65 100644 --- a/CppRun/main.cpp +++ b/CppRun/main.cpp @@ -17,7 +17,7 @@ int main(int argc, const char** argv) { clock_t begin, finish; begin = clock(); if (argc < 2) { - cerr << "This program take at least 1 arguments(CMD; [Options])!" << endl; + cout << "This program take at least 1 arguments(CMD; [Options])!" << endl; return 1; } diff --git a/CppRun/process_pubmed_txt.cpp b/CppRun/process_pubmed_txt.cpp index 73a471e..a789e28 100644 --- a/CppRun/process_pubmed_txt.cpp +++ b/CppRun/process_pubmed_txt.cpp @@ -19,24 +19,52 @@ using namespace std; /* 灏嗙粨鏋滃啓鍏at鏂囦欢 */ /* 灏嗘暟鎹啓鍏at鏂囦欢涓紝鐢ㄧ粰瀹氱殑鍚嶇О鍛藉悕 */ -bool SavePubmed(const string& matPath, - const vector &vTgName, - const vector >& vumPaperTagVal) +bool SavePubmed(const string& matPath, + const vector& vTgName, + vector >& vumPaperTagVal) { - MATFile* pMatFile = matOpen(matPath.c_str(), "r"); //鎵撳紑.mat鏂囦欢 + MATFile* pMatFile = matOpen(matPath.c_str(), "w"); //鎵撳紑.mat鏂囦欢 if (pMatFile == nullptr) { - cerr << "filePath is error! " << matPath << endl; + cout << "filePath is error! " << matPath << endl; return false; } vector vTgChars; - for (auto strTg : vTgName) { + for (auto& strTg : vTgName) { vTgChars.push_back(strTg.c_str()); } // 鍒涘缓缁撴瀯浣撴暟鎹 mxArray* mxStruct = mxCreateStructMatrix(1, 1, vTgName.size(), vTgChars.data()); + // 鍒涘缓cell matrix + unordered_map ummxCellMtx; + for (auto & tgName : vTgName) { + ummxCellMtx[tgName] = mxCreateCellMatrix(1, vumPaperTagVal.size()); + } + // 閬嶅巻姣忎竴绡囨枃绔 + for (int i = 0; i < vumPaperTagVal.size(); ++i) { + auto& umTagVal = vumPaperTagVal[i]; + // 閬嶅巻鏂囩珷鐨勬瘡涓涓猼ag + for (auto& tgName : vTgName) { + mxArray* mxStr = mxCreateString(umTagVal[tgName].c_str()); + mxArray* pMxArr = ummxCellMtx[tgName]; + mxSetCell(pMxArr, i, mxStr); + } + } + + // 灏哻ell matrix璧嬪肩粰struct matrix + for (auto& tgName : vTgName) { + mxArray* pMxArr = ummxCellMtx[tgName]; + mxSetField(mxStruct, 0, tgName.c_str(), pMxArr); + } + + // 灏嗙粨鏋勪綋鍐欏叆mat锛屽苟鍛藉悕涓篢x + matPutVariable(pMatFile, "Tx", mxStruct); + // 灏哸bstract淇℃伅鍐欏叆mat锛屽苟鍛藉悕涓篴bs1 + matPutVariable(pMatFile, "abs1", ummxCellMtx["AB"]); + + matClose(pMatFile); return true; } @@ -129,7 +157,7 @@ void ProcessPubmedTxt(int argc, const char** argv) { vumPaperTagVal.push_back(umTagContent); } - cout << "鏂囦欢涓暟锛" << vumPaperTagVal.size() << endl; + // cout << "鏂囦欢涓暟锛" << vumPaperTagVal.size() << endl; /* 鍘婚櫎娌℃湁鎽樿鐨勬枃绔 */ const string abstractTag = "AB"; @@ -147,7 +175,7 @@ void ProcessPubmedTxt(int argc, const char** argv) { const string pmidTag = "PMID"; for (auto itr = vumPaperTagVal.begin(); itr != vumPaperTagVal.end(); ) { if (umPMID.find((*itr)[pmidTag]) != umPMID.end()) { - cout << "duplicate " << (*itr)[pmidTag] << endl; + // out << "duplicate " << (*itr)[pmidTag] << endl; itr = vumPaperTagVal.erase(itr); } else { @@ -172,7 +200,7 @@ void ProcessPubmedTxt(int argc, const char** argv) { testOfs << vumPaperTagVal[i][abstractTag] << endl; } testOfs.close(); - cout << "鏂囦欢涓暟锛" << vumPaperTagVal.size() << endl; + // cout << "鏂囦欢涓暟锛" << vumPaperTagVal.size() << endl; // for (auto num : vPaperStartIdx) cout << num << endl; ifsPubmedTxt.close(); diff --git a/GMM/main.cpp b/GMM/main.cpp index ff75e8f..27576ec 100644 --- a/GMM/main.cpp +++ b/GMM/main.cpp @@ -183,7 +183,7 @@ void ThreadProcessData(const ThreadParam& param) { int main(int argc, const char** argv) { if (argc != 5) { - cerr << "This program should take 4 arguments(1.parrent Dir; 2. mat file suffix; 3. out mat filename; 4. thread number)!" << endl; + cout << "This program should take 4 arguments(1.parrent Dir; 2. mat file suffix; 3. out mat filename; 4. thread number)!" << endl; return 1; } string parrentDir(argv[1]); // 知识颗粒的父目录名称