matlab - 在 Matlab 中执行此矩阵运算是否更有效

标签 matlab matrix linear-algebra

我想在 Matlab 中做以下事情:给定一个矩阵 H,我想构建一个相同大小的矩阵 H*,使得 H*(:,i) 是下一列的总和(即 i+1 -> n) 的 H。例如,如果 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沿第 2 个维度使用 'reverse' 选项,如下所示:

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

关于matlab - 在 Matlab 中执行此矩阵运算是否更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61213846/

相关文章:

c# - 旋转 M*N 矩阵(90 度)

java - 在二维矩阵中一次执行 2 步

时间:2019-03-08 标签:c++petscmatrixinversion

python - 如何从 Python 中的一组线性方程式中绘制平面?

c++ - 使用 gcc 4.6.1 通过 mex 启用 AVX 指令

matlab - FOR 遍历列向量与行向量

MATLAB:保存类属性

python - theano 张量的 pdist

c++ - 如何将三角矩阵索引转换为行、列坐标?

python - 如何创建特定的上三角矩阵?