为每个 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
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