首页 文章

matlab结构mex

提问于
浏览
0

我正在寻找速度和性能非常重要的项目中的一些建议 .

我创建了一个模型,它由一个带有1个for-loop(25 000次迭代)的外部函数组成,它调用了几个定制函数 . 为了提高模型的性能,我将定制的函数重写为MEX函数 . 这已经提供了很好的加速 . 但是,我还想将外部for循环放在MEX函数中 . 但是我将数据从MATLAB传递到MEX函数时遇到了问题 . (注意,无法对for循环进行矢量化) .

在模型模拟之前已知的数据被保存到大型嵌套数组结构中(以“data.Q.position1”的形式构建,其中“position1”为10000个双精度数组) . 包含双精度数的所有数组都具有相同的长度 . 模型的结果也将写入这个数组结构(当然不同的字段名,并且在for循环之前完成预分配)

所以目前,该模型看起来像这样:

[data]  = function model(data)
for i=1:10000
    data.Q.position1(i) = MEX-function1(data.WL.position4(i), data.WL.position3(i), …);
    data.Q.position2(i) = MEX-function1(data.WL.position6(i), data.WL.position12(i), …);
    …
    data.WL.position7(i) = MEX-function2(data.Q.position1(i), …);
     …
end

我选择了数组结构,因此我可以轻松指出函数输入所需的变量 .

所以我的问题是,如何将for循环放在MEX函数中,我该如何处理结构?我是MEX和C语言的新手,所以也许有一个简单明了的解决方案......

其次,这整个概念在性能方面是否看起来不错,或者是否有更好的解决方案?

提前致谢!

1 回答

  • 0

    mxGetFieldmxSetField开始,然后从那里跟踪文档路径......

相关问题