为每个 X 绘制两个具有多个 Y 值的图形

plotting two with multiple values of Y for each X

A = [4180,4180,4200,4200,4200,4330,...]
B = [94, 180, 120, 150, 110, 160 ...]

我有 2 个数组。

A 按值排序,每个单元格包含可能相等的值。

B 如上图。

我想绘制 A 与 B 的对比图,但由于 A 的每个元素都有多个值,因此该图非常难看。

有没有办法让A的每个值只保留一个单元格,同时取B中相应单元格的平均值?

例如:

A1 = [4180,4200,4330,...]
B1 = [mean(94,180),mean(120,150,110),...]

一种方法-

[A1,~,idx] = unique(A,'stable')
B1 = accumarray(idx,B,[],@mean).'

更快的选择 -

B1 = (accumarray(idx, B)./accumarray(idx,1)).'

或-

B1 = (accumarray(idx, B)./histc(idx,1:max(idx))).'

样本运行

输入-

>> A,B
A =
        4180        4180        4200        4200        4200        4330
B =
    94   180   120   150   110   160

输出-

>> A1,B1
A1 =
        4180        4200        4330
B1 =
          137       126.67          160