Matlab中几何平均值的特定时间间隔

时间:2012-06-01 08:48:56

标签: matlab time-series moving-average

说我有一个矩阵(NX2),其中第一列的元素是秒数(从午夜开始),第二列是与秒相关联的股票收益。如何使用函数geomean并计算特定时间间隔的几何返回值?假设几何在分钟间隔返回?问题是我可能会在某个特定的分钟间隔中说4个股票回报,有时在另一个区间内有10个回报。如果我按分钟提取所有交易,则每分钟间隔中登记的退货数量将不相同 谢谢!

2 个答案:

答案 0 :(得分:1)

只要你有几分钟的时间(从午夜开始)作为一个整数,你可以使用我的consolidator函数和几何来计算你需要的东西,它是矢量化的。只需从文件交换中下载它。

Consolidator将返回在给定分钟内找到任何数据的时间向量,以及每次返回的几何平均值。

答案 1 :(得分:1)

您可以使用简单的arrayfun

执行此操作
>> n = [15 1;25 2;67 3; 99 4;182 5] #% example data

n =
 #% t(s)   val  
    15     1
    25     2
    67     3
    99     4
   182     5

>> t1=0:60:240;
>> t2=t1+60;
>> arrayfun(@(t1,t2) geomean(n( n(:,1)>t1 & n(:,1)<=t2, 2)), t1,t2)

ans =

    1.4142    3.4641       NaN    5.0000       NaN

t1t2只是您感兴趣的窗口的开始和结束时间的向量。在这里,我让它们连续60秒间隔;但它们可能是你想要的任何东西。非连续的,重叠的,你可以命名。

匿名函数捕获调用n时存在的矩阵arrayfun,并为每个t1,t2对的矩阵行创建逻辑索引。