我需要一个Matlab函数 1)加快速度 2)通过自动微分(AD)生成函数的导数。
我通过使用Matlab Coder生成C代码和mex函数来完成加速。现在我正在寻找一个AD工具,开箱即用(或通过次要代码修改)可用于此自动生成的C代码。它似乎是很多C / C ++ AD工具,请参阅C/C++ AD tools,我为此目的测试了一对:
有没有人有经验使用Matlab Coder生成代码的这些工具?
PS。 AD工具应该适用于Windows。
答案 0 :(得分:1)
如果您有符号工具箱,则可以使用它来生成分析衍生物。假设你有一个像z = f(x,y)这样的函数你可以创建符号变量
x = sym('x', [mx,nx]);
y = sym('y', [my,ny]);
其中mx,nx,mx,我指定输入变量的大小。使用符号变量调用f(例如z = f(x,y))。
现在您可以使用jacobian函数创建衍生物。
jac_z_x = jacobian(z,x(:));
jac_z_y = jacobian(z,y(:));
使用matlabFunction将衍生物写入matlab文件。如果需要,您可以使用MATLAB Coder编译该函数。这就是我为优化问题所做的工作。
希望这会有所帮助 的Matthias