You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言计算矩阵上半部分对角线和(从中间起始)

解决矩阵上半部分对角线和的计算问题

首先,咱们先明确你要的目标:从方阵的主对角线(中间那条)开始,依次计算右上方所有对角线的和,直到最右上角的(1,n)这条对角线,最后把每条的和都存起来。

针对你给出的4x4示例矩阵,我们可以用偏移量循环的思路来实现,具体代码和解释如下:

完整代码实现

# 你的示例矩阵
A <- matrix(c(2, 4, 3, 1, 5, 7, 1, 2, 3, 2, 3, 4, 1, 5, 6, 0), 
            nrow = 4, 
            ncol = 4, 
            byrow = TRUE)

# 获取矩阵的行、列数
m <- nrow(A)
n <- ncol(A)

# 初始化一个向量,用来保存每条对角线的和
diag_sums <- c()

# 循环遍历偏移量:从0(主对角线)到n-1(对应(1,n)的对角线)
for (offset in 0:(n-1)) {
  # 生成当前对角线的元素索引:行从1到m-offset,列从1+offset到n
  current_indices <- cbind(1:(m - offset), (1 + offset):n)
  # 提取元素并求和,添加到结果向量中
  current_sum <- sum(A[current_indices])
  diag_sums <- c(diag_sums, current_sum)
}

# 打印矩阵和结果
print("示例矩阵:")
print(A)
print("各对角线的和(从主对角线到(1,n)对角线):")
print(diag_sums)

代码解释

  • 偏移量offset的作用:offset=0对应主对角线(列=行),offset=1对应列=行+1的对角线,以此类推,offset=n-1时正好是只有(1,n)一个元素的对角线。
  • 索引生成:cbind(1:(m - offset), (1 + offset):n)会自动生成当前对角线上所有元素的行、列坐标,确保不会超出矩阵的边界。
  • 结果存储:每次计算完一条对角线的和,就把它追加到diag_sums向量里,最后就能得到所有目标对角线的和。

运行这段代码后,你会得到结果:[1] 12 9 5 1,对应四条对角线的和,完全符合需求。

内容的提问来源于stack exchange,提问作者shegzter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:30:43