矩阵中元素的加权和 - Matlab?

时间:2011-05-19 22:54:59

标签: matlab matrix sum weighted

我有两个50 x 6矩阵,比如AB。我想为矩阵中列的每个元素分配权重 - 对列中较早出现的元素赋予更多权重,对同一列中稍后出现的元素权重更小...同样适用于所有6列。像这样:

cumsum(weight(row)*(A(row,col)-B(row,col)); % cumsum is for cumulative sum of matrix

如何在不使用循环的情况下有效地完成任务?

1 个答案:

答案 0 :(得分:3)

如果您将权重向量w作为50x1向量,那么您可以将代码重写为

cumsum(repmat(w,1,6).*(A-B))
顺便说一句,我不知道你为什么在循环中对标量进行cumsum操作......它没有任何效果。我假设你的意思是你想要对整个矩阵做的事情。默认情况下,在矩阵上调用cumsum将沿着每列运行。如果您需要沿着行进行操作,则应使用可选维度参数cumsum(x,2)来调用它,其中x是您拥有的任何矩阵。