我必须在matlab中在一些局部坐标系中生成一系列2D网格,例如:
xC = 0:0.2:10;
yC = 0:0.1:1;
[xlocal,ylocal] = meshgrid(xC,yC);
在本地坐标上定义了标量场,例如:
scalarField = xlocal.^2+ylocal.^2;
contourf(xlocal,ylocal,scalarField);
现在我想绘制" scalarField"在全局参考系统X,Y中。所以我应该采用每个坐标对并应用(平面内)旋转+平移。我唯一的想法是" for"循环遍历所有坐标,但它看起来很慢(我有很多网格)。
你可以设计一个更好的代码吗?
答案 0 :(得分: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);