gpt4 book ai didi

matlab - 计算方阵的部分累积和

转载 作者:行者123 更新时间:2023-12-04 04:47:14 24 4
gpt4 key购买 nike

假设我有一个方阵 M:

M = [0 0 0 0 0 1 9; 0 0 0 0 0 4 4; 0 0 1 1 6 1 1; 0 1 2 9 2 1 0; 2 1 8 3 2 0 0; 0 8 1 1 0     0 0; 14 2 0 1 0 0 0]


0 0 0 0 0 1 9
0 0 0 0 0 4 4
0 0 1 1 6 1 1
M = 0 1 2 9 2 1 0
2 1 8 3 2 0 0
0 8 1 1 0 0 0
14 2 0 1 0 0 0

现在我想计算两个不同的累积和:一个从每列的顶部到列的元素,这是矩阵的对角线元素,另一个从列的底部到相同的元素对角线元素。

结果矩阵 M'因此应该如下:
       0 0 0 0 0 1 9
0 0 0 0 0 4 5
0 0 1 1 6 2 1
M' = 0 1 3 9 4 1 0
2 2 8 5 2 0 0
2 8 1 2 0 0 0
14 2 0 1 0 0 0

我希望对我想要实现的目标的解释足够容易理解。由于我的矩阵比本例中的矩阵大得多,因此计算也应该是有效的……但到目前为止,我什至不知道如何“低效”地计算它。

最佳答案

在一行中使用一些翻转和上三角函数 triu :

Mp = fliplr(triu(fliplr(cumsum(M)),1)) ...
+flipud(triu(cumsum(flipud(M)),1)) ...
+flipud(diag(diag(flipud(M))));

关于matlab - 计算方阵的部分累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com