查找持续时间事件的中间位置点

我有以下矢量A:

A = [34 35 36 5 6 7 78 79 7 9 10 80 81 82 84 85 86 102 3 4 6 103 104 105 106 8 11 107 201 12 202 203 204];

对于n = 2 ,我在A计算大于或等于15的元素:

D = cellfun(@numel, regexp(char((A>=15)+'0'), [repmat('0',1,n) '+'], 'split'));

上面的表达式给出了以下输出作为持续时间值:

D = [3 2 7 4 6] = [A(1:3) **stop** A(7:8) **stop** A(12:18) **stop** A(22:25) **stop** A(28:33)];

上述算法通过计数大于或等于15的元素来计算持续时间值。计数还允许少于2个连续元素小于15( n = 2 )。 当有2个或更多连续元素小于15并在A内的下一个子串重新开始时,计数器停止。

最后,我想找一种方法来找出持续时间事件A(1:3)A(7:8)A(12:18)A(22:25)A(28:33)的中位置点, ,这些都是正确计算的。 结果应该如下所示:

a1 = round(median(A(1:3))) = 2; 
a2 = round(median(A(7:8))) = 8;
a3 = round(median(A(12:18))) = 15;
a4 = round(median(A(22:25))) = 24;
a5 = round(median(A(28:33))) = 31;

我编辑了这个问题以使其更清楚,因为此处提供的解决方案将A(1:3)之后的连续2个或更多数字小于15(本例中为A(1:3)的最后一个数字分配给下一个子字符串A(7:8)并且与其他子串相同,因此产生错误的持续时间值,并且因此当n = 2或者对于任何给定的偶数n ,持续时间事件的错误中值位置点。

任何人有任何想法如何实现这一目标?

链接地址: http://www.djcxy.com/p/83831.html

上一篇: Find median position points of duration events

下一篇: what to do after recursion ends