我有一個波浪像高斯或半高斯的信號。我想要的是計算波峯發生時的實時時間和波的長度。比如我有以下信號:實時檢測信號中的波形
我要檢測的信號的5個主要波峯。他們的最大值,持續時間和價值。我怎樣才能實時找到它們?我的信號存儲在C#隊列中。我應該如何執行以實時檢測波浪?
if (currentValue >threshold1 && (currentValue - previousValue) > 0)
{
firstCondition = true;
}
if (currentValue > threshold2 && currentValue < threshold2 && (currentValue - previousValue) > 0 && firstCondition == true)
{
secondCondition = true;
}
if (currentValue > (threshold2-0.02) && (currentValue) < threshold2 && (currentValue - previousValue) < 0 && firstCondition == true && secondCondition == true)
{
thirdCondition = true;
secondCondition = false;
}
if (currentValue > threshold1 && currentValue <threshold1 && (currentValue - previousValue) < 0 && thirdCondition == true)
{
fourthCondition = true;
firstCondition = false;
secondCondition = false;
thirdCondition = false;
counter++;
}
我的代碼似乎是執行基本檢測。不過,我似乎在放鬆一些波浪。我猜這是基於門檻。我的第二個問題是,我怎樣才能保留從波浪起點到終點相關的時間戳?
我投票結束這個問題作爲題外話,因爲這是要求算法 – DavidG
你可以使用平滑來簡化搜索(框平滑將是最簡單的)。之後的事情應該非常簡單。 – Paul
我在第一步做的是將信號與參考波互相關。因此,我得到了一個平滑信號的互相關輸出信號。但是,在信號平滑之後,我必須實施一些啓發式操作才能獲得所需的波形? –