计算意味着MATLAB中给定持续时间值的时间步长

Bow*_*cho 4 arrays matlab

例如,我有5个时间步和一个持续时间值:

TimeSteps = [4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16];
Duration = [5, 3, 3];
Run Code Online (Sandbox Code Playgroud)

我想自动生成每个持续时间的时间步长之间的平均值.在这种情况下,结果将如下所示:

Result = [mean([4, 5, 6, 7, 8]), mean([10, 11, 12]), mean([14, 15, 16])]; 
Run Code Online (Sandbox Code Playgroud)

这将导致:

Result = [6, 11, 15]; 
Run Code Online (Sandbox Code Playgroud)

我有一个474x1的持续时间向量,所以我需要自动化这个.如果有人可以提供帮助,那就太好了.谢谢.

小智 5

您需要将该mean函数应用于TimeSteps具有以下大小的分区Duration:

Partition = mat2cell(TimeSteps, 1, Duration);
Result    = cellfun(@mean, Partition)
Run Code Online (Sandbox Code Playgroud)

如果你是单行的粉丝:

Result = cellfun(@mean, mat2cell(TimeSteps, 1, Duration));
Run Code Online (Sandbox Code Playgroud)

注意:请考虑针对行向量发布此解决方案; 更改mat2cell列向量的调用.