how to Vectorize iterative '' coordinates transformation ''loop operation for speed
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
kamal wisal
el 7 de Sept. de 2018
Comentada: Matt J
el 10 de Sept. de 2018
I want to transform local coordinates(tip positions) of a rotating blade into corresponding global coords. Tip coordinates and angular distance changes in time. which means there is a unique transformation matrix for every time step. hence i used loop to multiply transformation matrix (3*3) with local coords to get me global coords each time step. for accuracy reasons i need more than million transformations,which take more than 5 hours with my core i5 computer.its a 2D transformation. i need to vectorize only following part of the code.Please check attachment for complete code.
for i = 1: vec_size
M=[cos(theta_inst(i)) -sin(theta_inst(i)) dx(i);...
sin(theta_inst(i)) cos(theta_inst(i)) dy(i); ...
0 0 1]; %transformation matrix
glbl(1:3,i)= M*local(:,i); % dx,dy ~=0;
end
0 comentarios
Respuesta aceptada
Matt J
el 7 de Sept. de 2018
Editada: Matt J
el 7 de Sept. de 2018
In non-homogeneous coordinates,
c=cos(theta_inst(:)).'; s=sin(theta_inst(:)).';
dx=dx(:).'; dy=dy(:).';
L=local(1:2,:);
glbl = [ sum([c;-s].*L) ; sum([+s;c].*L) ]+[dx;dy] ;
4 comentarios
Matt J
el 10 de Sept. de 2018
If it's relative error, it is likely due simply to floating point errors.
Más respuestas (0)
Ver también
Categorías
Más información sobre Mathematics and Optimization en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!