MATLAB脚本运行缓慢:求解方程组

时间:2016-06-24 16:25:28

标签: matlab

编辑:我按建议使用了探查器,看起来Matlab花了大量时间处理符号和求解方程组。所以,我会稍微改变一下我的问题:是否有更快的方法来实现这个方程组,也许是一个不涉及声明符号的方法?

function [As_rad, Ae_rad] = pos_to_angle(x_pos, y_pos)
    % Converts given x and y coordinates into angles (using link lengths)

    Ls = 0.4064;   % in meters
    Le = 0.51435;  % in meters
    x_offset = 0.0;
    y_offset = -0.65;   % from computer running the robot

    syms angle_s angle_e

    x = x_pos + x_offset;       % Account for offset of origins
    y = y_pos + y_offset;       % between motor and workspace

    eqn1 = x == Ls*cos(angle_s) + Le*cos(angle_e);  % Actual conversion
    eqn2 = y == Ls*sin(angle_s) + Le*sin(angle_e);
    sol1 = solve([eqn1, eqn2], [angle_s, angle_e]);
    As_rad_mat = sol1.angle_s;
    Ae_rad_mat = sol1.angle_e;

    if As_rad_mat(1) > Ae_rad_mat(1);
        As_rad = As_rad_mat(1);
        Ae_rad = Ae_rad_mat(1);
    else
        As_rad = As_rad_mat(2);
        Ae_rad = Ae_rad_mat(2);
    end
end

更具体地说,它看起来像一个函数mupadmex(我认为它与符号相关)占用了大约80%的计算时间。以上只是我在整个剧本中如何解决方程组的一个例子。

1 个答案:

答案 0 :(得分:0)

感谢大家的回复!我最终使用了分析器,发现计算时间来自于每次程序经过循环时求解方程组。所以我使用了一个单独的脚本来象征性地求解方程,因此脚本只需要进行代数。它现在运行得更快。