来自

时间:2016-10-27 08:13:02

标签: matlab visualization

我必须在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"循环遍历所有坐标,但它看起来很慢(我有很多网格)。

你可以设计一个更好的代码吗?

1 个答案:

答案 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);