我有两个50 x 6
矩阵,比如A
和B
。我想为矩阵中列的每个元素分配权重 - 对列中较早出现的元素赋予更多权重,对同一列中稍后出现的元素权重更小...同样适用于所有6列。像这样:
cumsum(weight(row)*(A(row,col)-B(row,col)); % cumsum is for cumulative sum of matrix
如何在不使用循环的情况下有效地完成任务?
答案 0 :(得分:3)
如果您将权重向量w
作为50x1
向量,那么您可以将代码重写为
cumsum(repmat(w,1,6).*(A-B))
顺便说一句,我不知道你为什么在循环中对标量进行cumsum
操作......它没有任何效果。我假设你的意思是你想要对整个矩阵做的事情。默认情况下,在矩阵上调用cumsum
将沿着每列运行。如果您需要沿着行进行操作,则应使用可选维度参数cumsum(x,2)
来调用它,其中x
是您拥有的任何矩阵。