因此,您有兩個時間向量:tA
和tB
,以及包含已知峯值的時間索引向量bIndices
。這對應於時間(s)tB(bIndices(:))
。你通過整個矢量bIndices
通過整個向量tA(:)
FULLY每次再次搜索需要循環直到時間是大於或 - 等於到tB(b)
bIndices = [101, 403,...]; %Vector containing the indices of the peaks in 'tB'
aIndices = []; %Allocate an empty vector
A = []; %Allocate an empty vector
B = []; %Allocate an empty vector
for b = bIndices %This will cycle through all peak indices one at a time setting 'b' to the current single index
B = [B tB(b)]; %Retrieve the actual time using the index, concatenate it
for a = 1:length(tA) %Loop through the entire time vector tA
if (tA(a) >= tB(b)) %Time is greater than or equal
%Concatenate the newly found index 'a' from tA to the vector aIndex:
aIndices = [aIndices a];
%Concatenate the newly found time 'tA(a)' to the time vector A:
A = [A tA(a)]; %Or if you want the actual time
break; %Exit the inner loop, search for the next index `b`
end
end
end
在結束時,A
存儲峯值的陣列timesl匹配B
(大約可能稍後)中的所有時間。 A-B
是兩次之間的差異(兩個矢量應該是相同的長度),但它應該非常小,任何零將意味着2在這些情況下完美對齊。 aIndices
是在期望的時間(s)對應的指數tA
。我沒有真正測試這個代碼,希望我的邏輯是正確的。
查找連續點之間的差在B. C = B(2,結束) - B(1,端-1) 當從正的符號變爲負在C,你有一個峯。 –