Matlab 正在寻找在半圆上绘制角度和距离的方法
我有一组角度数据,范围从0到180度,还有等量的距离,范围从0到100米 我正在寻找一种方法来获得一个半圆(如玫瑰图的上半部分),其中对于每个数据点,我可以有一个从中心以相关角度出来的条,条的长度与距离相对应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 =
有什么方法可以做到这一点吗?我想这可能是你想要的。只需转换为笛卡尔坐标并分离为单元数组
%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)
?不要破坏你的帖子。你为什么要这样做?破坏你的帖子会有被暂停的风险。人们对你很有帮助,为什么不帮助你,把你的帖子留给未来的读者?