2016-04-14 5 views
-1

特定の開始点を割り当てるために、時間ベクトル内の特定のデータを選択しようとしています。MatlabでIFループと単調データを使用する

Vit_lim = 5*(max(dcursor))/100 
A = find(dcursor > Vit_lim) 

A = [1 2 3 4 5 6 7 8 158 159 160.........318] 

開始点が最初の値として検出されています。

初期8つの値は偽陽性(そして実際の開始点(158)を表すものではありません。

私は20の連続した値のために単調に最初の値が増加した場合にポイントを開始見つけ条件を追加する必要があります。

これは大きなループ内である。だから、

+0

dcursorとは何ですか?それは1より小さいかのように見えます。 –

+0

典型的な 'dcursor'と' Vit_lim'データを提供できますか? – Crowley

+0

こんにちは、以下の提案は私のために働いた。すべて私に戻ってくれてありがとう。 –

答えて

0

A = [1 2 3 4 5 6 7 8 158 159 160.........318] 

found=0; 
idx=1; 
monoticSum=0; 
tempValue=A(1); 
idx=2; 

While found == 0 
temp=A(idx); 
if ((tempValue+1) == temp) 
    monoticSum = monoticSum+1; 
    tempValue = temp; 
else 
    monoticSum = 0 
end 
if (monoticSum == 20) 
    found=1; 
    break 
end 
idx=idx+1 
end 

これは動作するはずです。 Actuallこれは素晴らしい出発点です。しかし、トランジションが20未満であれば、変数monoticSumを再起動する必要があります。私は更新しました。

+0

ありがとうございました! –

+0

@DavidGaul正しい答えを確認してください。ありがとう! :) – 16per9

+0

@DavidGaulあなたは答えを確認してくださいできますか? – 16per9

0

サンプルデータに8つのfalse-start値があることを前提に、20個の連続した値が意味するものがわかりません。しかしここには、前のサンプルから少なくとも20個離れたサンプルが見つかります。

b=find(diff(A)>20); 
start_idx = A(b+1); 
関連する問題