Optimizing this script without using symbolic toolbox
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi guys, this is the script which takes up all the time
function [t_sol,xi,yi] = solveIntersection(px,py,rx,ry,r)
syms t
x = px + t*rx;
y = py + t*ry;
c = x^2+y^2-r^2;
t_sol = max(double(solve(c)));
xi = double(subs(x,'t',t_sol));
yi = double(subs(y,'t',t_sol));
This script calculates the intersection of a circle and a given vektor. How do i calculate the intersection without using the symbolic toolbox? Or just how can I optimize this function?
The vector starts in (px,py) and has a direction (rx,ry). r is the radius of the circle.
0 Kommentare
Akzeptierte Antwort
Andrew Newell
am 28 Apr. 2011
If you run this code
syms t px py rx ry r
x = px + t*rx;
y = py + t*ry;
c = expand(x^2+y^2-r^2);
c = collect(c,t)
solve(c,t)
you'll get explicit equations for the two solutions for t. These can be put in the function:
function [t,xi,yi] = solveIntersectionNum(px,py,rx,ry,r)
t = [-(px*rx + py*ry + (- px^2*ry^2 + 2*px*py*rx*ry - py^2*rx^2 + r^2*rx^2 + r^2*ry^2)^(1/2))/(rx^2 + ry^2)
-(px*rx + py*ry - (- px^2*ry^2 + 2*px*py*rx*ry - py^2*rx^2 + r^2*rx^2 + r^2*ry^2)^(1/2))/(rx^2 + ry^2)];
xi = px + t*rx;
yi = py + t*ry;
It's about 100 times faster.
5 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Conversion Between Symbolic and Numeric finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!