我有N*4 dim的B矩阵。我要根据最后一列值计算矩阵的平均值。最后一列的重复值在1到3之间。我想要计算上一列值相同的所有行的平均值。我正在使用以下命令:
l(it:,)=mean(B(i,:)) 其中,it在循环中的范围从1到3,而i有所有的行索引,这些行的最后一个column=1.When运行了这个代码,得到了Sub scripted assignment dimension mismatch error。有人能指出这个命令有什么问题吗?
发布于 2014-01-04 00:22:08
考虑以下示例数据:
B = [ 0.4000 0.3000 0.2000 1.0000
0.3000 0.2000 0.1000 2.0000
0.7000 0.8000 0.6000 1.0000
0.3000 0.4000 0.8000 2.0000
0.7000 0.5000 0.5000 3.0000
0.1000 0.3000 0.9000 3.0000
0.6000 0.4000 0.5000 1.0000 ];有两种可能的办法:
accumarray:
结果= NaN(3,3);对于k= 1:3结果(:,k) =累加数组( B(:,4),B(:,k),[],@mean,NaN);结束对于示例数据,上述任何一项都会给出
result =
0.5667 0.5000 0.4333
0.3000 0.3000 0.4500
0.4000 0.4000 0.7000发布于 2014-01-03 23:14:25
你的问题不是最清楚的,但我想,,我知道你想做什么。
您说i包含每个值1,2,3的感兴趣行的索引,所以我假设您需要
mean_k = mean(mean((B(i,:)))对于每一个k= 1,2,3。很明显,当您在确定感兴趣的相关行时,每次迭代超过1,2,3时,您都必须重新计算i。
mean函数在调用矩阵时不返回标量,它返回一个行向量,其元素是矩阵的每一列的平均值。因此,要获得平均值,需要对结果再次调用mean。
请记住,在总体均值计算中,这还包括最终的列值(用于分类)。
https://stackoverflow.com/questions/20914161
复制相似问题