【发布时间】:2015-08-17 10:59:47
【问题描述】:
我有以下向量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 中的下一个子字符串处重新开始。
这里提供的解决方案Find median position points of duration events将A(1:3)之后小于15的2个或更多连续数字(本例中为3)的最后一个数字分配给下一个子字符串A(7:8),与其他子字符串相同,这不是计算持续时间事件的正确方法。
我想要一种方法来找到正确计算的持续时间事件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;
【问题讨论】:
-
你能解释一下为什么 round(median(A(1:3))) = 2 吗?你只想要索引的中位数吗?
-
@Bowecho - 转发问题不是这里的工作方式。在最坏的情况下,版主会采取行动。你应该做什么:澄清你的第一个问题并添加尽可能多的细节,然后提供赏金。这样一来,您的问题将得到一周的充分关注,您一定会得到答案。
-
@thewaywewalk 我也会尝试这样做。