我正在寻找一些速度和性能非常重要的项目建议。matlab结构mex
我创建了一个模型,它由一个外部函数和1个for-loop(25 000次迭代)组成,它调用了几个定制函数。为了提高模型的性能,我将自定义函数重写为MEX函数。这已经给了一个很好的加速。但是,我还想将外部for-loop放在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语言非常陌生,所以也许有一个简单的解决方案...
其次,这个整体概念在性能方面看起来不错,还是更好的解决方案?
在此先感谢!
我想,所使用的输入与我还没有被定义的索引,你有你的片段错误。虽然这应该纠正你可以使用parfor。 – bdecaf 2013-02-12 11:27:47