我试图确定一个值是否在向量中按顺序重复 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
所以有 50 个实例的值return_deltas
大于 的平均值return_deltas
。
我需要依次确定值连续return_deltas
3 次大于其平均值的次数。换句话说,如果 中的值return_deltas
连续 3 次大于其平均值,则为一个实例。
例如:
---------------------------------------------------------------------
| `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 次大于平均值。
我在想的是创建一个新的向量:
>> a = return_deltas > mean(return_deltas)
当然,其中包含值return_deltas
大于平均值的值,并使用它来查找连续多少次,值 in 连续return_deltas
3 次大于其平均值。我正在尝试使用内置函数(如果有,我还没有发现它)或至少避免循环来做到这一点。
关于我如何接近的任何想法?