我有两组数据,但这些数据集的大小不同。 测量发生时,每组包含测量本身(MeasA和MeasB,均为双倍)和时间点(TimeA和TimeB,datenum或julian日期)。
现在我想将较小的数据集与较大的数据集进行匹配,为此,我想要表示围绕数据分布的较大数据集的数据点。小集的时间点,最后做一些相关分析。
编辑: 小例子数据的样子:
MeasA = [2.7694 -1.3499 3.0349 0.7254 -0.0631];
TimeA = [0.2 0.4 0.7 0.8 1.3];
MeasB = [0.7147 -0.2050 -0.1241 1.4897 1.4090 1.4172 0.6715 -1.2075 0.7172 1.6302];
TimeB = [0.1 0.2 0.3 0.6 0.65 0.68 0.73 0.85 1.2 1.4];
现在我想要折叠MeasB和TimeB,以便我将测量的平均值接近TimeA中的时间点,所以例如TimeB应该如下所示:
TimeB = [mean([0.1 0.2]) mean([0.3 0.6]) mean([0.65 0.68 0.73]) mean([0.85]) mean([1.2 1.4])]
TimeB = [0.15 0.4 0.69 0.85 1.3]
然后像这样崩溃MeasB:
MeasB = [mean([0.7147 -0.2050]) mean([-0.1241 1.4897]) mean([1.4090 1.4172 0.6715]) mean([-1.2075]) mean([0.7172 1.6302])];
MeasB = [0.2549 0.6828 1.1659 -1.2075 1.1737]
答案 0 :(得分:1)
函数interp1
是你的朋友。
您可以使用以下方式为集合B
获取一组新的衡量标准,而不是设置A
:
newMeasB = interp1( TimeB , MeasB , TimeA ) ;
前2个参数是您要重新插值的集合的原始时间和测量值,最后一个参数是您希望计算插值的新x轴(示例中的时间)。
这样你就不会在两组测量之间得到不同的时间,你可以逐点比较它们。
查看interp1
的文档以获取更多解释以及有关插值或任何可能的推断的选项。
编辑:
Matlab doc曾经对这个功能有很好的说明,但是我无法在线找到它,所以这里有:
因此,使用linear
方法,如果值恰好在2个点之间进行插值,则函数将返回精确平均值。如果插值比一个点更接近于另一个点,则返回的值将按比例更接近最近点的值。
如果NaN
未与TimeA
完全重叠,则timeB
可能会出现在两侧(返回向量的开头或结尾)。该功能不能"插值"因为没有锚点。但是,interp1
的不同选项允许您"推断"在输入范围之外,或者指定另一个默认值而不是NaN。