考虑 MATLAB 中的以下矩阵:
% x y z V
data = [ 1 1 1 6
1 1 2 7
1 1 3 8
1 2 1 6
1 2 2 7
1 2 3 9
1 3 1 6
1 3 2 4
1 3 3 8
2 1 1 9
2 1 2 8]
如何通过对适当和进行平均来获得 ( V
vs z
) 配置文件?x
y
在这种情况下,结果应该是:
B = [1, (6+6+6+9)/4);
2, (7+7+4+8)/4);
3, (8+9+9)/3 ]
平均值是所有V
具有相同 的 s的平均值Z
。
但是,原始数据包含真实值:
0.815210000000000 1.30799000000000 -84.8230000000000 -5.90987000000000
0.815210000000000 2.42194000000000 -84.8230000000000 -0.236048000000000
0.815210000000000 3.53589000000000 -84.8230000000000 3.19780000000000
0.815210000000000 4.64984000000000 -84.8230000000000 5.48969000000000
0.815210000000000 5.76379000000000 -84.8230000000000 6.42475000000000
0.815210000000000 6.87774000000000 -84.8230000000000 5.97255000000000
0.815210000000000 7.99169000000000 -84.8230000000000 4.25794000000000
0.815210000000000 9.10564000000000 -84.8230000000000 1.49070000000000
0.815210000000000 10.2196000000000 -84.8230000000000 -2.10373000000000
使用accumarray
查找组的平均值。unique
在第 3 列的前一列值以获取B
.
[C, ~, ic]= unique(data(:,3));
B = [C accumarray(ic,data(:,4),[],@mean)]
小心的浮点值,如果你的第三列的值不是真的一模一样,然后使用uniquetol
来代替。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句