在Matlab中是否有更有效的方法来执行此矩阵运算



我想在Matlab中做以下事情:给定一个矩阵H,我想构建一个相同大小的矩阵H*,使得H*(:,I(是H的下一列(即I+1->n(的总和。例如,如果H是

H =
2     4     7    14
3     5    11    -3

我希望H*是

25    21    14     0
13     8    -3     0

到目前为止,我已经完成了以下代码,但它涉及for循环,所以我不希望它非常高效(尤其是,在我将使用的实际应用程序中,我的矩阵将有大量列(。

H_tilde=zeros(size(H));
for i=1:size(H,2)
H_tilde(:,i)=sum(H(:,i+1:size(H,2)),2);
end

有没有办法让它变得更好?

使用cumsum'reverse'选项沿着第二维度,如下所示:

H_tilde = [cumsum(H(:, 2:end), 2, 'reverse') zeros(size(H,1), 1)];

最新更新