2016-05-03 26 views
1

信号(最大値と最小値)からすべてのピークを抽出し、電圧値を含む2つのベクトルとそのインデックスを含む2つのベクトルを取得しました。MATLABで信号のピークからピークまでの振幅を計算する

私は、この信号から異なるピークトゥピーク(最小から最大、最小から最大)値をすべて計算したいと考えています。最終的に、これはこの信号の最大ピークツーピーク値を見つけることです。信号がドリフトしているので、ハイパスフィルタに「許可」されていないので、これが私がこの値を見つけると考えることができる唯一の方法です。私はそれを実装するために私の頭を傷つけるです。

私はこのコードや目標を達成するための他のアイデアを作成するために助けていただければ幸いです。ありがとうございます。

私のデータポイントの例です。 PosVolは、陽性ピークの電圧であり、陰性ピークのNegVolである。それぞれ、PosIndNegIndがインデックスです。

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

私はすべての取得のためにそれを示唆している - の立ち下がり側面を言わせて - ピークをピーク値に、あなたはポジティブ指数を反復処理し、実行します。

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の次元が多い」というエラーが出ます。ポジティブよりも1つ少ない負のピークが存在し、その逆も起こり得る。これをどうすれば解決できますか? – user3406207