[問題] 關於vc++和matlab的資料傳遞
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++呼叫Matlab引擎
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenCV
問題(Question):
想將經過Matlab運算後的結果傳回VC++
餵入的資料(Input):
Q矩陣、b向量
預期的正確結果(Expected Output):
得到x向量
錯誤結果(Wrong Output):
無法傳回運算結果
程式碼(Code):(請善用置底文網頁, 記得排版)
double *vector_x;
Engine *ep;
mxArray *H;
mxArray *b;
mxArray *new_block_size;
H = mxCreateDoubleMatrix(35, 35, mxREAL);
b = mxCreateDoubleMatrix(1, 35, mxREAL);
new_block_size = mxCreateDoubleMatrix(1, 35, mxREAL);
memcpy((void *)mxGetPr(H), (void *)Q, sizeof(Q));
memcpy((void *)mxGetPr(b), (void *)vector_b, sizeof(vector_b));
engPutVariable(ep, "Q", H);
engPutVariable(ep, "b", b);
engEvalString(ep, "[x,f_out]=quadprog(Q,b,[],[],Aeq,beq,lb,ub);");
(Aeq、beq、lb、ub都給予值且經過檢查正確)
new_block_size = engGetVariable(ep, "x");
vector_x = mxGetPr(new_block_size);
補充說明(Supplement):
memcpy的Q和vector_b是VC已經算好要丟到Matlab處理的資料
new_block_size一直抓不到運算完的結果x
google相關資料,有看到engGetArray這個函式
但是在新版的Matlab中已經不使用此函式,而用engGetVariable來替代
輸出的x應為一(1*35)大小的陣列
麻煩各位幫我看一下到底是哪裡出錯了,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.3.111
→
05/28 12:08, , 1F
05/28 12:08, 1F
→
05/28 12:09, , 2F
05/28 12:09, 2F
→
05/28 12:13, , 3F
05/28 12:13, 3F
→
05/28 12:19, , 4F
05/28 12:19, 4F
→
05/28 12:23, , 5F
05/28 12:23, 5F
推
05/28 12:28, , 6F
05/28 12:28, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章