値がベクトル内でN回連続して繰り返されるかどうかを識別しようとしています。私が直面している課題は、ベクトル内でN回連続して数回繰り返すことができるということです。目的は、特定の値が平均値を超える回数を連続して決定することです。例えば:
>> return_deltas
return_deltas =
7.49828129642663
11.5098198572327
15.1776644881294
11.256677995536
6.22315734182976
8.75582103474613
21.0488849115947
26.132605745393
27.0507649089989
...
(たとえば、いくつかの値を出力しただけですが、ベクトルは大きくなります。)
>> mean(return_deltas)
ans =
10.50007490258002
>> sum(return_deltas > mean(return_deltas))
ans =
50
return_deltas
したがって、の平均よりも大きい値のインスタンスは50個ありますreturn_deltas
。
return_deltas
の値が3回続けて平均よりも大きい回数を順番に特定する必要があります。つまり、の値return_deltas
が3回続けて平均よりも大きい場合、それは1つのインスタンスです。
例えば:
---------------------------------------------------------------------
| `return_delta` value | mean | greater or less | sequence |
|--------------------------------------------------------------------
| 7.49828129642663 |10.500074902 | LT | 1 |
| 11.5098198572327 |10.500074902 | GT | 1 |
| 15.1776644881294 |10.500074902 | GT | 2 |
| 11.256677995536 |10.500074902 | GT | 3 * |
| 6.22315734182976 |10.500074902 | LT | 1 |
| 8.75582103474613 |10.500074902 | LT | 2 |
| 21.0488849115947 |10.500074902 | GT | 1 |
| 26.132605745393 |10.500074902 | GT | 2 |
| 27.0507649089989 |10.500074902 | GT | 3 * |
---------------------------------------------------------------------
星は、連続した3の成功したシーケンスを表します。このセットの結果は、値が3回続けて平均よりも大きい場合が2回あったため、2になります。
私が考えているのは、新しいベクトルを作成することです。
>> a = return_deltas > mean(return_deltas)
もちろん、の値がreturn_deltas
平均よりも大きいものが含まれており、それを使用して連続して何回かを調べると、の値はreturn_deltas
3回続けて平均よりも大きくなります。私は組み込み関数(ある場合はそれを発見していません)を使用してこれを実行しようとしていますが、少なくともループを回避しています。
私がどのようにアプローチするかについて何か考えはありますか?