根据逻辑过滤器获取平均数据

时间:2015-08-17 11:10:05

标签: arrays matlab filter

我们有两列(' 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用于计算平均值时。如何做到这一点?

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