寻找一种在半圆上绘制角度和距离的方法

时间:2015-06-17 17:09:02

标签: matlab

我有一堆0到180度的角度数据,以及0到100米的等距离。

我正在寻找一种获得半圆形的方法(如玫瑰图的上半部分),对于每个数据点,我可以从中心出来一个条形,相关角度,条形长度对应距离。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

我认为这可能会做你想要的。只需转换为笛卡儿并分离成单元格数组。

%Generate sample data
theta = pi*rand(10, 1); r = 15*rand(size(theta));

%Make (x,y) coordinates
x0 = r.*cos(theta);
y0 = r.*sin(theta);

%Convert to cell arrays, this is assuming a column vector, if it were a 1 x N row vector change the `2` to a `1` and `vertcat` to `horzcat`. 
xy = vertcat(num2cell([zeros(size(x0)), x0], 2)', num2cell([zeros(size(y0)), y0], 2)');

%Make the plot
plot(xy{:})

编辑: 解释

xy = vertcat(num2cell([zeros(size(x0)), x0], 2)', num2cell([zeros(size(y0)), y0], 2)');

更好。

vertcat(A,B)[A; B]相同,只是有点整洁。所以它连接xy坐标。

num2cell(x, 2)将N×M矩阵x转换为包含1×M个向量的N×1个单元阵列。这允许每一行拥有它自己的单元格。

通过转置然后连接单元格数组,最终得到xy{1}中第一行的x坐标和xy{2}中的y坐标,依此类推。

因此当您执行plot(xy{:})时,参数图看到的是

plot(line1X, line1Y, line2X, line2Y, ...)