我们有两列(' A'和' B')如下。
hogan-express
现在,我需要分别对A = [10 5 6 6 10 2 3 2 1 3 2 3 3 7 9 8 6 8 8 12]
B = [10 5 6 6 2 2 3 2 1 3 2 3 3 7 2 2 3 3 8 12]
logicalFilter= ~(B<=3 & B>1)
的{{1}}对应三个不同的A
块,并忽略{{1}中的前两个点(例如)当每个块中的logicalFilter == 1
用于计算平均值时。如何做到这一点?
答案 0 :(得分:3)
我的心理技能使我得到了这个答案:
%// input
A = [10 5 6 6 10 2 3 2 1 3 2 3 3 7 9 8 6 8 8 12]
B = [10 5 6 6 2 2 3 2 1 3 2 3 3 7 2 2 3 3 8 12]
mask = (B<=3 & B>1)
%// get subs and vals for accumarray
C = cumsum(~mask) + 1
[~,~,subs] = unique(C(mask))
val = A(mask)
%// calculate mean starting with 3rd value of group
out = accumarray(subs(:),val(:),[],@(x) mean(x(3:end)) )
out =
2.5000 3.0000 7.0000