例如,我有 5 个时间步长和一个持续时间值:
TimeSteps = [4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16];
Duration = [5, 3, 3];
我想自动生成每个持续时间的时间步长之间的平均值。在这种情况下,结果将如下所示:
Result = [mean([4, 5, 6, 7, 8]), mean([10, 11, 12]), mean([14, 15, 16])];
这将导致:
Result = [6, 11, 15];
我有一个 474x1 的持续时间向量,所以我需要自动化这个。如果有人可以提供帮助,那就太好了。谢谢你。
最佳答案
您需要将 mean
函数应用于具有 TimeSteps
大小的 Duration
分区:
Partition = mat2cell(TimeSteps, 1, Duration);
Result = cellfun(@mean, Partition)
如果你是单线的粉丝:
Result = cellfun(@mean, mat2cell(TimeSteps, 1, Duration));
注意:请注意此解决方案是针对行向量发布的;更改列向量的
mat2cell
调用。关于arrays - 计算 MATLAB 中给定持续时间值的时间步长之间的平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28499173/