首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于列值的矩阵均值计算方法

基于列值的矩阵均值计算方法
EN

Stack Overflow用户
提问于 2014-01-03 22:51:14
回答 2查看 304关注 0票数 1

我有N*4 dim的B矩阵。我要根据最后一列值计算矩阵的平均值。最后一列的重复值在1到3之间。我想要计算上一列值相同的所有行的平均值。我正在使用以下命令:

代码语言:javascript
复制
l(it:,)=mean(B(i,:)) 

其中,it在循环中的范围从1到3,而i有所有的行索引,这些行的最后一个column=1.When运行了这个代码,得到了Sub scripted assignment dimension mismatch error。有人能指出这个命令有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-04 00:22:08

考虑以下示例数据:

代码语言:javascript
复制
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 ];

有两种可能的办法:

  1. 使用逻辑索引: 结果= NaN(3,3);for k= 1:3结果(k,:) =平均(B(B(:,4)==k,1:3))
  2. 使用accumarray: 结果= NaN(3,3);对于k= 1:3结果(:,k) =累加数组( B(:,4),B(:,k),[],@mean,NaN);结束

对于示例数据,上述任何一项都会给出

代码语言:javascript
复制
result =
    0.5667    0.5000    0.4333
    0.3000    0.3000    0.4500
    0.4000    0.4000    0.7000
票数 1
EN

Stack Overflow用户

发布于 2014-01-03 23:14:25

你的问题不是最清楚的,但我想,我知道你想做什么。

您说i包含每个值1,2,3的感兴趣行的索引,所以我假设您需要

代码语言:javascript
复制
 mean_k = mean(mean((B(i,:)))

对于每一个k= 1,2,3。很明显,当您在确定感兴趣的相关行时,每次迭代超过1,2,3时,您都必须重新计算i

mean函数在调用矩阵时不返回标量,它返回一个行向量,其元素是矩阵的每一列的平均值。因此,要获得平均值,需要对结果再次调用mean

请记住,在总体均值计算中,这还包括最终的列值(用于分类)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20914161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档