我的C++代碼有問題。我想從我的cpp程序返回一個k維的矩陣到Matlab。用C++和mex輸出一個矩陣
我想通過的矩陣存儲在all_data
中,並且是大小爲(npoints+1) x ndims
的矩陣。
我一直在尋找如何做到這一點,我想出了:
//send back points
vector< vector <double> > indexes = mxGetPr(plhs[0]);
for (int i=0; i < (npoints1+1); i++)
for (int j=0; j < ndims1; j++)
indexes[ i ][ j ] = all_data[ i ][ j ];
但它不工作,因爲all_data
是vector<vector<double>>
變量,MATLAB說:
error: conversion from 'double*' to non-scalar type
'std::vector<std::vector<double, std::allocator<double> >,
std::allocator<std::vector<double,
std::allocator<double> > > >' requested
有人可以幫我嗎?非常感謝!
你確定索引[i + ndims1 * j]?我會做我*(npoints1 + 1)+ j。但我可能是錯的。 – ablm
在正常的C中,是的,你是對的。但是,MATLAB中,數組存儲的是我們所期望的。所以x(2,6)就在x(3,6)的旁邊。這就是「專欄」的含義。這是來自FORTRAN日子的剩餘物。 – Peter
wooow ...真的嗎?感謝您的解釋! – ablm