矢量化是一个很好的第一次优化,通常比编写自己编译的 mex 函数(在 c 中)要容易得多。
然而,高级用户的黄金中间道路是 Matlab Coder(这也适用于比发布的问题稍难的问题,其中矢量化或多或少是不可能的)。首先,在您的情况下,围绕慢速代码创建一个小的 m-file 函数:
function dist1 = do_some_stuff(source_points,dist1,plt2,trans1)
for i=1:source_points;
dist1(:,:,i)=plt2-trans1(i,1);
end
然后创建一个简单的包装函数,它调用 do_some_stuff 并定义输入。这个文件应该只有 5 行,只需要最基本的东西。Matlab Coder 使用包装函数来了解 do_some_stuff 的典型正确输入是什么。
您现在可以从 Apps 部分启动 Matlab Coder gui,只需在 Entry-Point Files 下添加 do_some_stuff。按 Autodefine types 并选择您的包装函数。去构建并按下构建,你很高兴!这种方法通常几乎不费吹灰之力就能大大提高执行速度。
BR马格努斯