次のようなコードを作成しようとしています: v が負から正にゼロを横切ったときの時系列では、これは他のゼロクロッシング (左右方向) から少なくとも 4 日離れていました。右に 8 つの要素 (ゼロクロッシングから) を取ると、少なくとも 80% の日が正であり、(ゼロクロッシングから) 左に 6 つの要素を取ると、少なくとも 60% の日が負でした. これらの条件を満たすシリーズは、ブックマークされるか、位置とともに保存されます。
ご協力いただきありがとうございます..
v=[-1 2 3 -9 -8 -6 -7 -9 -3 -2 -5 -6 -3 1 6 8 5 9 7 4 5 6 -5 -7 2 5 3 2 -2 -1 -5 -4 1 4 3 5 6 3 4 3 -4 5]
このプログラムを使用すると、値が正から負に、またはその逆に変化したときの位置を抽出できます。
vexample=v;
vexample(vexample >= 0) = 1;
vexample(vexample < 0) = -1;
z = vexample > 0;
id = find([true;diff(vexample.') ~= 0]);
k = diff([id;numel(vexample)+1]);
out = -k;
out(z(id)) = k(z(id));
clear id k vexample z
out = -1 2 -10 9 -2 4 -4 8 -1 1
そして今、条件を満たすシリーズの部分を検出しようとしていますが、それには問題があります