我在y = 0的水平线(x,y,数据)(2991 * 3)上有一些数据。 我不想在笛卡尔坐标系中绘制直线,而是将该直线转换为四分之一圆,并以一系列颜色绘制数据。
我可以创建一个网格
rho = x
theta = (0:0.5:90)*pi/180
[th, r] = meshgrid(theta,rho);
我遇到的问题是在2D中绘制圆圈并将数据链接到网格。 任何提示都会非常受欢迎!
答案 0 :(得分:2)
您对meshgrid
的来电正是您想要的。您只需生成与th
和r
条目对应的数据矩阵。
您的数据取决于r
的值,因为这是行中值增加的矩阵,
r = [rho(1), rho(1), ..., rho(1);
rho(2), rho(2), ..., rho(2);
rho(3), rho(3), ..., rho(3);
... ];
您需要转换颜色data
,因此它们对应于此矩阵。
这可以通过生成矩阵的repmat(data(:), 1, size(r,2))
来完成,以便i
行只包含值data(i)
:
[data(1), data(1), ..., data(1);
data(2), data(2), ..., data(2);
data(3), data(3), ..., data(3);
... ];
这样,这些值对应于r
行所给出的半径。
您的最终脚本将如下所示:
%% Example data
x = (2:0.1:8);
data = sin(x);
%% Shift the values towards the center, so you get a circle instead of an annulus.
rho = x-min(x);
%% Your meshgrid generation code.
theta = (0:0.5:90)*pi/180;
[th, r] = meshgrid(theta, rho);
%% Plotting the values
surf(min(x)+r.*cos(th), ...
min(x)+r.*sin(th), ...
repmat(data(:), 1, size(th,2)), ...
'linestyle', 'none');
view(2);
axis equal tight;
colorbar;
,输出如下所示: