我想制作一个使用Matlab在某一点停止的情节。
这是使用scatter
的情节:
然而,我希望情节是一条平滑的曲线而不是散点。如果我使用plot
,它会给我:
我不想要垂直线。
我想我可以手动将这个功能分成两部分,并在一张图上单独绘制,但问题是我不知道手头的断点在哪里。
有一个很好的解决方案吗?感谢。
答案 0 :(得分:5)
要查找数据中的跳转,您可以搜索函数的导数最大的位置:
[~,ind] = max(diff(y));
绘制函数的一种方法是将该点设置为NaN
并照常绘制函数:
y(ind) = NaN;
plot(x,y);
这带来了丢失数据点的缺点。为避免这种情况,您可以在中间添加值为NaN
的数据点:
xn = [x(1:ind), mean([x(ind),x(ind+1)]), x(ind+1:end)];
yn = [y(1:ind), NaN, y(ind+1:end)];
plot(xn,yn);
另一个解决方案是分割图的矢量:
plot(x(1:ind),y(1:ind),'-b', x(ind+1:end),y(ind+1:end),'-b')
到目前为止,所有方法只能处理一次跳跃。要处理函数中任意数量的跳转,需要知道跳转的大小或跳转次数。解决方案虽然相似。
答案 1 :(得分:0)
你应该遍历你的数据并找到两个连续点之间距离最大的索引。在两个单独的数组中将该数组从该索引中分离出来并分别绘制它们。