我有一个像a的矩阵,我想计算这个矩阵的每一个对角线的和,并用一个像Y的向量来表示。

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

Y=[3 8 15 12 7]

我知道密码
[sum(diag(y,2)),sum(diag(y,1)),sum(diag(y,0)),sum(diag (y,-1)),sum(diag (y,-2))]

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

最佳答案

spdiags可以随心所欲:

dsum = sum(spdiags(A))

可以使用fliplr反转向量并创建一个函数:
function dsum = diagsum(A)
    dsum = fliplr(sum(spdiags(A)));
end

结果
dsum =

    3    8   15   12    7

10-06 13:52