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

Matlab 正在寻找在半圆上绘制角度和距离的方法,matlab,Matlab,我有一组角度数据,范围从0到180度,还有等量的距离,范围从0到100米 我正在寻找一种方法来获得一个半圆(如玫瑰图的上半部分),其中对于每个数据点,我可以有一个从中心以相关角度出来的条,条的长度与距离相对应 有什么方法可以做到这一点吗?我想这可能是你想要的。只需转换为笛卡尔坐标并分离为单元数组 %Generate sample data theta = pi*rand(10, 1); r = 15*rand(size(theta)); %Make (x,y) coordinates x0 =

我有一组角度数据,范围从0到180度,还有等量的距离,范围从0到100米

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


有什么方法可以做到这一点吗?

我想这可能是你想要的。只需转换为笛卡尔坐标并分离为单元数组

%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]
相同,只是稍微整洁一点。因此,它连接了
x
y
坐标

num2cell(x,2)
将nxm矩阵
x
转换为包含1xm向量的nx1单元数组。这使得每一行都有自己的单元

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

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

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

不,就像我想画两个不同的函数一样
x=linspace(0,2*pi,100);plot(x,sin(x),x,cos(x))
将其放在单元格数组中,使Matlab将线
xy{:}
视为
plot([0;x(1)],[0;y(1)],[0;x(2)],[0;y(2)],…)
为什么不使用常规的
rose
plot和一条额外的线,例如
ylim([02)
?不要破坏你的帖子。你为什么要这样做?破坏你的帖子会有被暂停的风险。人们对你很有帮助,为什么不帮助你,把你的帖子留给未来的读者?