我編寫了一個C++程序,其唯一目的是調用Matlab代碼。我有一個主程序,其中在C++代碼中調用Matlab - 在engine.h中使用方法
在一個文件中讀取數據(具有高維矩陣90000 * 24)轉換成C++ 結構
通過這些結構,以Matlab代碼
推出具有這些結構參數的Matlab例程
從Matlab獲取輸出數據並將它們存儲在C++結構中
2 /,矩陣是Matlab結構中的字段。該結構,說MATLAB_STRUCT
有幾個矩陣領域,MATLAB_STRUCT.Z1
,MATLAB_STRUCT.Z2
,......以及一些浮點字段MATLAB_STRUCT.flt1
,...
什麼是設置C++矩陣(double**
)作爲Matlab的結構等領域的正確的做法?到目前爲止,我想出了這個,使用engine.h
mxArray* labcoeffs_array = convertVectorToMxArray(labcoeffs,
coeff_nrows, coeff_ncols);
const std::string lab_coeff_name = "MATLAB_STRUCT.labCoef";
engPutVariable(ep, lab_coeff_name.c_str(), labcoeffs_array);
其中convertVectorToMxArray
是我寫的double**
轉換爲mxArray
的幫手,
inline mxArray *convertVectorToMxArray(double** mat,
const int nb_rows, const int nb_cols)
{
mxArray *outputMxArray = mxCreateDoubleMatrix(
(int) nb_rows,
(int) nb_cols,
mxREAL);
double *data = (double*) mxGetData(outputMxArray);
for (int r = 0; r < nb_rows; r++)
for (int c = 0; c < nb_cols; c++)
data[r + c*nb_rows] = (double)mat[r][c];
return outputMxArray;
};
但我已經看到了一些其他的技術用於分配的值到Cpp代碼中的Matlab結構(雖然是浮點值,但不是矩陣),模仿C++字符串中的命令行語法:
std::string setStruct = "MATLAB_STRUCT" + "." + "nB" + " = " + str->nB + ";";
matlabExecute(ep, setStruct);
與ep
指向Matlab引擎的指針。
是否可以通過命令行來調整此方法以將值賦值給Matlab結構的矩陣類型字段?
將值分配給Matlab結構的矩陣類型字段的最佳方法是什麼?