Matlab:不连续的情节

时间:2015-06-10 05:42:40

标签: matlab plot

我想制作一个使用Matlab在某一点停止的情节。

这是使用scatter的情节: enter image description here

然而,我希望情节是一条平滑的曲线而不是散点。如果我使用plot,它会给我:

enter image description here

我不想要垂直线。

我想我可以手动将这个功能分成两部分,并在一张图上单独绘制,但问题是我不知道手头的断点在哪里。

有一个很好的解决方案吗?感谢。

2 个答案:

答案 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)

你应该遍历你的数据并找到两个连续点之间距离最大的索引。在两个单独的数组中将该数组从该索引中分离出来并分别绘制它们。