【发布时间】:2012-07-15 18:44:58
【问题描述】:
我试图确定一个值是否在向量中按顺序重复 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次大于其平均值,那就是一个实例。
例如:
---------------------------------------------------------------------
| `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 个成功的序列。这组的结果将是 2,因为有两次值连续 3 次大于平均值。
我在想的是创建一个新的向量:
>> a = return_deltas > mean(return_deltas)
这当然包含return_deltas 中的值大于平均值的值,并使用它来查找连续多少次,return_deltas 中的值连续 3 次大于平均值。我正在尝试使用内置函数(如果有,我还没有发现它)或至少避免循环来做到这一点。
对我如何接近有什么想法吗?
【问题讨论】: