2017-09-15 36 views
-2

我正在編寫從加速計獲取信號的代碼,並使用TVD算法來消除信號。我們可以在下面的圖表看,我沒做到這一點:findchangepts不會檢測到一些變化

Denoising

但我要檢測的高峯,我想,我可以用MATLAB中的findchangepts功能,但是當我運行它,我具備以下條件:

findchangepts function run

我們可以看到它不能檢測到峯值。有沒有人知道該功能中的任何設置,或者在峯內去噪的方法?

+0

從[docs](https://uk.mathworks.com/help/signal/ref/findchangepts.html):「'findchangepts(x)'返回**索引**,其中x的平均值變化最爲顯着使用'findchangepts(x,'MaxNumChanges',5)'指定多個點。或者使用'findpeaks'。總是在詢問這裏之前做一個簡單的文檔搜索... – Wolfie

+0

謝謝@Wolfie我也做過這種搜索,但問題在於我現在無法確切地進行更改,因爲代碼將用於多個信號,以及信號中的多個變化,這些變化可能彼此不同。同樣,當我使用findpeaks函數時,它給了我所有的峯值,在信號中你可以看到的峯值雖然看起來並不像5402峯,但這就是爲什麼我要求更好的濾波。 –

回答

0

我能做到,與findpeaks功能如下:

[pks, locs] = findpeaks(x,'MinPeakProminence',0.25*max(x),'MinPeakDistance',50); 

,並具有X傳球throght一系列信封濾波器和低通濾波器爲:

[yupper,ylower] = envelope(x) 

希望這將是對某人有用

+0

我不認爲這*對任何人都很有用,這是一個非常廣泛的答案(「我發現我的發現很好,可以按照我想要的方式過濾我的特定數據」),這個問題非常廣泛(「我想以某種方式過濾這些數據,我試過的這個東西沒有用,這裏是一個沒有示例數據的圖片「)。您可以嘗試改進問題,使其更清晰地表達您想要實現的目標,爲什麼,如何,示例數據,您嘗試過的代碼等等。 – Wolfie