2016-06-09 1 views
0

Я пытаюсь проанализировать и применить фильтр к сигналу (измерениям). Проблема заключается во время записи измерений, между двумя временными метками, значение не было записано, поэтому программа, используемая для записи этих измерений, только что связала эти 2 свободных конца, это проблема для моего алгоритма. Я хочу разбить сигнал на несколько частей на основе этой аномалии. Мне нужно сделать это автоматически.Разбиение кусочного сигнала на разные части

Ниже приводится иллюстрация такой аномалии:

Abnormality of the signal

Ниже у меня есть ПИК plot(diff(t)):

Plot of diff of t

я хотел бы некоторую помощь с обнаружением этого ненормальности и разрезая сигнал в точке. Поэтому в моем примере сигнал будет разрезан на 3 части.

Ps - есть 2 нарушения в моем 1-ПОС, я только увеличенный на 1, чтобы показать его правильно

Вот код, который я придумал до сих пор:

a = diff(t); 
[value, ind] = findpeaks(a,'thresold',0.5); 
for i = 1:length(ind) 
    T(i) = %not sure how to use here 
end 

редактировать с пиковыми изображениями :

1st peak of 2

Значение Ind: [3557; 7550]

+0

каков критерий, чтобы решить часть может быть отделена? – Yvon

+0

может быть выбрано thresold из diff (t), так как этот сигнал позволяет говорить 0,7. – Aashu10

+0

Почему вы не интерполируете точки между ними? – Umar

ответ

0

Как насчет использования функции findpeaks?

Ниже приведен пример.

a=[0 0 0 0 0 1 0 0 0 0 1 0 0 0]; 
findpeaks(a,'threshold',0.5); 

Результат будет ниже.

enter image description here

Чтобы найти индекс,

[value, ind]=findpeaks(a,'threshold',0.5); 

Здесь ind будет индекс пика.

В вашем случае,

a=diff(t); 
[value, ind]=findpeaks(a,'threshold',0.5); 
firstT=t(1:ind(1)-1); 
secondT=t(ind(1):ind(2)-1); 
ThirdT=t(ind(2):end); 
+0

Спасибо за эту замечательную функцию! Но проблема в этом сигнале я знаю наверняка, есть 2 пика. но мне нужно автоматизировать это. поэтому я попытался написать цикл. a = diff (t); [значение, ind] = findpeaks (a, 'thresold', 0.5); для i = 1: длина (ind) T (i) = end; не знаете, как написать T – Aashu10

+0

, чтобы проверить правильность кода. – Aashu10

+0

Вы хотите отрезать переменную t? – KKS

 Смежные вопросы

  • Нет связанных вопросов^_^