如何查找和绘制图表上特定点的交集

时间:2015-10-28 16:00:19

标签: matlab plot

简介: 时域中有两个信号。第一个是时域振动信号,另一个是同一时域的相位信号。

enter image description here

enter image description here

问题:

现在的目标是将振动信号上的点标记在我们有相位信号峰值的点上,如图所示。我不希望图形交叉点!!!!当我在参考相位信号中出现峰值时,我想要找到的就是振动信号。

enter image description here

以上是在相同时域中绘制的振动信号(红色)以及参考信号(蓝色)。

[pk,lc] = findpeaks(reference_signal,'MinPeakDistance',0.001,'MinPeakHeight',0.05);

使用查找峰值函数在时间中找到峰值(相位信号)的位置,这意味着对于整个信号范围,我将在时间轴上仅获得13个唯一点(lc)

lc = [ 0.0015, 0.0030, 0.0045, 0.0060, 0.0075, 0.0090, 0.0105, 0.0120, 0.0135, 0.0150, 0.0165, 0.0180, 0.0195]

而实际振动信号的时域看起来像这样。

Time_Vibration_signal = [0.00047, 0.00049, 0.00051, 0.00053, 0.00055, 0.00057, 0.00059, 0.00061, 0.00063 and so on]

现在我想在振动信号上准确标记点lc。 i,当振动信号穿过第一个点(峰值)时,说0.0015秒,我想在振动信号和第二个点上标记,依此类推。

在此之后我被困住了。有人可以帮助我吗?任何提示或建议都会有所帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用polyxpoly查找两行之间的交集。

假设您需要正弦曲线并希望找到所有交叉点,您可以尝试这样做:

x1      = 0:10*pi/99:10*pi;
y1      = sin(x1);
x2      = 0:10*pi/49:10*pi;
y2      = 0.2*cos(x2);
[ix,iy] = polyxpoly(x1,y1,x2,y2);     % intersection points
plot(x1,y1,'r',x2,y2,'k');
hold on
plot(ix,iy,'r.','markersize',30)

你会有这样的事情:

enter image description here