2016-05-03 1 views
1

Я извлек все пики из сигнала (максимумы и минимумы) и теперь имеет 2 вектора, содержащие их значения напряжения и два вектора, содержащие их индексы.Вычислить все амплитуды от пика до пика в сигнале в MATLAB

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

Буду признателен за любую помощь в создании этого кода или других идей для достижения моей цели. Заранее большое спасибо.

Приведен пример моих данных. PosVol - напряжение положительных пиков и NegVol отрицательных пиков. Соответственно, PosInd и NegInd являются индексами.

PosVol = [ 0.0437 0.1680 0.2089 0.5719 0.9146 0.8306 0.8646 1.0000 0.6541 0.1628 -0.3038 -0.0990 0.3602 0.4707 0.2968 0.1793]; 
NegVol = [ 1.2838 1.6351 1.5026 1.1441 1.2331 1.2732 0.9188 0.1841 0.0412 0.6215 1.1444 1.0828 0.5687 0.2590 0.3917 0.5605]; 
PosInd = [ 1533 4057 6609 9038 11426 13831 16403 19009 21206 23609 27015 29758 32294 34789 37147 39642]; 
NegInd = [ 2304 4733 7283 9768 12291 14817 17397 20105 22899 25851 28218 30706 33317 36211 38628 41123]; 

ответ

1

Я хотел бы предложить, что для получения всех - скажем, падение фланги - пик до пиковых значений, то перебирать POSTIVE индексов и сделать:

PeakPeakFalling = zeros(1,size(PosInd,2)); 
for ii=1:size(PosInd,2) 
    neg_index = find(NegInd(1,:)>PosInd(1,ii),1); 
    PeakPeakFalling(1,ii)=PosVol(1,ii)+NegVol(1,neg_index); 
end 

Это находит следующий индекс ниже минимума и с этим вычисляет разницу в стоимости.

Точно так же вы можете построить вектор PeakPeakRising, а затем просто найти максимум всех значений пикового значения. Я предположил здесь, что значения NegVol являются фактически отрицательными напряжениями.

+0

Удивительно! Большое спасибо за быстрый ответ. Он работает как удовольствие! – user3406207

+0

@ user3406207 Это приятно слышать. Пожалуйста. –

+0

Нужно еще немного мудрости! Если у меня есть неравномерное количество пиков, я получаю сообщение об ошибке «Назначение имеет больше не-одиночных размеров rhs, чем индексы, отличные от одиночных элементов». Может случиться так, что есть один менее отрицательный пик, чем положительные, и наоборот. Как я могу это исправить? – user3406207