Mys*_*Guy 3 matlab matrix linear-algebra
我想在 Matlab 中做以下事情:给定一个矩阵 H,我想构建一个相同大小的矩阵 H*,使得 H*(:,i) 是下一列的总和(即 i+1 -> n ) 的 H。例如,如果 H 是
H =
2 4 7 14
3 5 11 -3
Run Code Online (Sandbox Code Playgroud)
我期待 H* 是
25 21 14 0
13 8 -3 0
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经完成了以下代码段,但它涉及一个for循环,所以我不期望它非常有效(特别是,在我将使用的实际应用程序中,我的矩阵将有大量列)。
H_tilde=zeros(size(H));
for i=1:size(H,2)
H_tilde(:,i)=sum(H(:,i+1:size(H,2)),2);
end
Run Code Online (Sandbox Code Playgroud)
有没有办法让它更好?
使用选项cumsum沿 2nd 维度使用'reverse',如下所示:
H_tilde = [cumsum(H(:, 2:end), 2, 'reverse') zeros(size(H,1), 1)];
Run Code Online (Sandbox Code Playgroud)