1

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

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

我们如何在不使用循环的情况下有效地做到这一点?

4

1 回答 1

3

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

cumsum(repmat(w,1,6).*(A-B))

顺便说一句,我不知道你为什么要cumsum在循环中对标量进行操作......它没有效果。我假设您的意思是这就是您想要对整个矩阵执行的操作。默认情况下,调用cumsum矩阵将沿每一列进行操作。如果您需要沿行操作,则应使用可选的维度参数 as 调用它,您拥有的矩阵cumsum(x,2)在哪里。x

于 2011-05-19T23:21:30.580 回答