我需要在MATLAB中绘制很多未连接的线。这段代码将使用for循环:
x = 1:5;
y = 10:-2:2;
figure;
hold on;
for ii = 1:5
plot([0,x(ii)],[0,y(ii)],'b-');
end
是否可以在不使用for循环的情况下执行相同的操作?
用例:我正在尝试可视化树,并且要绘制许多行。我想预先计算所有行的终点并调用plot
或等效一次。这就是我使用scatter
来显示树的节点。
答案 0 :(得分:2)
您可以在绘图时使用NaN
断开线条。因此,您可以将x
和y
值与NaN
- 相同长度的向量相连,然后将reshape
与NaN
相连,以便xo
为yo
断开各个段之间的线路。
为了使代码普遍适用,我们引入xp = reshape([ones(size(x))*xo;x;NaN(size(x))],1,[]);
yp = reshape([ones(size(y))*yo;y;NaN(size(y))],1,[]);
和xp
作为原点的坐标。现在,要绘制的点可以如下计算:
x = 1:5;
y = 10:-2:2;
figure;
xo = 0; % x-coordinate of origin
yo = 0; % y-coordinate of origin
xp = reshape([ones(size(x))*xo;x;NaN(size(x))],1,[]);
yp = reshape([ones(size(y))*yo;y;NaN(size(y))],1,[]);
plot(xp,yp,'b-');
res, err := http.Head("https://golang.org")
if err != nil {
panic(err)
}
contentlength:=res.ContentLength
fmt.Printf("ContentLength:%v",contentlength)
- 矢量现在看起来像这样:
0 1 NaN 0 2 NaN 0 3 NaN 0 4 NaN 0 5 NaN └ origin └ end point of segment 2 └ to disconnect lines
产生与您的问题相同的结果的整个代码如下:
ParticleSystem
答案 1 :(得分:1)
另一种解决方案:
plot([zeros(1,length(x));x],[zeros(1,length(x));y],'r-')