2016-10-27 6 views
0

я должен генерировать ряд 2D сетки в MATLAB в некоторых локальных системах координат, например:Эффективное вращение inplane 2D-сетки в MATLAB из

xC = 0:0.2:10; 
yC = 0:0.1:1; 
[xlocal,ylocal] = meshgrid(xC,yC); 

над локальными координатами а scalarfield определяется, например:

scalarField = xlocal.^2+ylocal.^2; 
contourf(xlocal,ylocal,scalarField); 

Теперь я хотел бы построить «scalarField» в глобальной системе отсчета X, Y. Поэтому я должен взять каждую пару координат и применить (в плоскости) поворот + перевод. Единственная идея, которую я имею, - это цикл «за» по всем координатам, но, похоже, он довольно медленный (у меня много сеток).

Можете ли вы разработать лучший код?

+2

Поделитесь своим кодом обратной связи? – Divakar

ответ

0

Я понял сам. Вместо того, чтобы вращать всю сетку, я просто восстанавливаю новую, которая обеспечивает отображение. Сам код является более читаемым, чем при использовании циклов. Я отправляю сообщения, у кого могут быть одинаковые проблемы. В любом случае дальнейшие и быстрые вклады приветствуются!

[xloc,yloc] = meshgrid(s,t); %mesh in local coordiantes 
%% get grid in global coordiantes 
getX = @(coord1,coord2) R(1,:)*[coord1; coord2] + c(1); 
getY = @(coord1,coord2) R(2,:)*[coord1; coord2] + c(2); 
Xgrid = arrayfun(getX,xloc,yloc); 
Ygrid = arrayfun(getY,xloc,yloc);