简介: 时域中有两个信号。第一个是时域振动信号,另一个是同一时域的相位信号。
问题:
现在的目标是将振动信号上的点标记在我们有相位信号峰值的点上,如图所示。我不希望图形交叉点!!!!当我在参考相位信号中出现峰值时,我想要找到的就是振动信号。
以上是在相同时域中绘制的振动信号(红色)以及参考信号(蓝色)。
[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秒,我想在振动信号和第二个点上标记,依此类推。
在此之后我被困住了。有人可以帮助我吗?任何提示或建议都会有所帮助。提前谢谢。
答案 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)
你会有这样的事情: