查找持续时间事件的中间位置点
我有以下矢量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