【发布时间】:2015-03-24 13:37:18
【问题描述】:
我想在 mex 代码中操作一个 matlab 表 (http://se.mathworks.com/help/matlab/tables.html)。这可能吗?
例如,要在 mex 代码中操作一个数组,可以调用:
mxArray * matlabArray = prhs[0] ;// if matlabArray was the first argument to the mex function;
可以做类似的事情
mxTable * matlabTable = prhs[0] ; //mxTable does not actually exist... but I would like it to:)
并将表格作为第一个参数传递?
【问题讨论】:
-
如果您执行
mxArray * matlabArray = prhs[0]并且 prhs[0] 是一个表格会发生什么?它会引发错误还是您可以查看值? -
什么也没发生。在 VC++ 调试器中,您可以检查 matlabArray(例如作为浮点数),但它与我传递的不同。您还可以获取基础数据(通过 mxGetPr(matlabArray) 并将其分配给双精度向量,然后通过该向量(idx++)移动,但前几个字节中有 0(被视为 64 位双精度)...我意思是 prhs[0] 只是一个指针,那它为什么还要抛出错误呢?我通过了这个表:“table([-1,3.14,2.78]', categorical({'a', 'b', 'c' })'"
-
你想对表做什么?您可能必须使用 mexCallMATLAB 调用 MATLAB 函数并将表 mxArray 作为输入传递以在 MATLAB 中进行处理。
-
@Navan,感谢您让我关注 mexCallMATLAB。问题的重点是找出 mex 库是否提供任何 C 功能来操作表,例如内连接或聚合或您可能想要对表执行的任何其他操作。我没有具体的用例...
-
我认为没有任何特定于表的 mex 库函数。