我有以下矢量A
:查找中間位置的點的持續時間在Matlab
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
,我計數的元素大於或等於15內A
:
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
)。當連續的兩個或更多元素小於15並在A
內的下一個子串重新開始時,計數器停止。
這裏提供Find median position points of duration events溶液A(1:3)
後2個或更多連續的數字小於15(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;
可以解釋爲什麼輪(中間值(A(1:3)))= 2?你只想要索引的中位數? – GameOfThrows
@Bowecho - 轉發問題不是它在這裏如何工作。在最壞的情況下,版主會採取行動。你應該做的:澄清你的第一個問題,並儘可能多地添加細節,然後提供賞金。這樣你的問題得到了一週的充分重視,你一定會得到答案。 – thewaywewalk
@thewaywewalk我會盡力做到這一點。 – Bowecho