【发布时间】:2012-03-23 19:06:36
【问题描述】:
我写了一个简单的 mex 函数,它更新了 Matlab 数组已经分配的内容:
mex_test_array.c
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *x = mxGetPr(prhs[0]);
x[0] = 3.1416;
}
测试 1:
>> y = zeros(2, 2);
>> mex_test_array(y);
>> y
y =
3.1416 0
0 0
测试 2:
>> y = zeros(2, 2);
>> mex_test_array(y(:, 1));
>> y
y =
0 0
0 0
为什么它不适用于子矩阵(测试 2)?有没有可能让它发挥作用?
请指教。
备注: 我知道,更新输入数组并不是预期的 mex 文件的写入方式,而且我知道如何从 mex 返回数组。 我尝试这种技术的原因是避免两次分配数组的内存。
【问题讨论】: