计算矩阵的每个对角线的总和

nat*_*rov 3 matlab sum matrix diagonal

我有一个像A这样的矩阵,我想计算这个矩阵的每个对角线的总和,并在像Y这样的向量中显示它.

A=[1 2 3; 4 5 6; 7 8 9]

Y=[3 8 15 12 7]
Run Code Online (Sandbox Code Playgroud)

我知道代码

[sum(diag(y,2)),sum(diag(y,1)),sum(diag(y,0)),sum(diag (y,-1)),sum(diag (y,-2))]
Run Code Online (Sandbox Code Playgroud)

但我想把它写成一个函数.

obc*_*don 5

spdiags 可以做你想要的:

dsum = sum(spdiags(A))
Run Code Online (Sandbox Code Playgroud)

您可以使用反转向量fliplr并创建一个函数:

function dsum = diagsum(A)
    dsum = fliplr(sum(spdiags(A)));
end
Run Code Online (Sandbox Code Playgroud)

结果

dsum =

    3    8   15   12    7
Run Code Online (Sandbox Code Playgroud)