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

时间:2015-08-13 14:22:07

标签: arrays matlab duration median

我有以下矢量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的连续数字(在本例中为3)中的最后一个数字分配给下一个子串A(7:8)与其他子串相同,因此产生错误的持续时间值,从而导致n = 2或任何给定的偶数n的持续时间事件的错误中间位置点。

任何人都知道如何实现这个目标?

0 个答案:

没有答案