2017-04-06 11 views
0

循環的な動作を求める大量のデータを処理しようとしています。言い換えれば、2つのそれぞれの値の間で前後にジャンプするデータ。私は多くの異なるソリューションを試しましたが、それらのすべてが行動を識別するための誤ったポジティブを与えます。ここでは、最初の列が時間で、2番目の列が高度である場合、私が探しているものの例を示します。 5 2000; 10 1000; 15 2000; 20 1000]。この例では、標高は1000から2000フィートの間を行き来しています。誰かが私に手を差し伸べることができれば、大いに感謝します。私はMATLABで書いています。MATLABを使用した周期的な動作の特定

答えて

0

それだけであなたがそのような1Dフィルタリングを使用することができますシーケンシャル要素のためだ場合:あなたは、各パターンのすべての出現を検索したい場合は

A = [-5 8000; 0 1000; 5 2000; 10 1000; 15 2000; 20 1000; 25 3000; 30 1000]; 
b = A(:,2); 
% filtering with 2 elemnts vector. the imaginary part is to avoid 
% false-positives from adding different numbers to the same sum 
x = conv(b,[1;1j],'valid'); 
% find unique values and their number of occurrences 
[C,ia,ic] = unique(x,'stable'); 
counts = histcounts(ic,[1:max(ic),inf]); 
multiCounts = counts > 1; 
% find the repeating patterns 
patternFirstIdxs = ia(multiCounts); 
patterns = [b(patternFirstIdxs),b(patternFirstIdxs + 1)]; 

iaを見たり、それらの各々のためのk = strfind(b,pattern)を使用しています。

+0

2つの順次要素だけではなく、複数の値が存在する可能性があります。しかし、私はiaまたはk = strfind(b、パターン)を調べます。私はあなたの応答をありがとう! –

関連する問題