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

如何使用R语言创建非对角线/移动窗口矩阵?

用R语言创建移动窗口(非对角线)矩阵

我们可以自定义一个offdiag()函数来生成这种每行包含连续1的移动窗口矩阵,函数参数说明:

  • k: 每行连续1的个数(窗口大小)
  • n: 矩阵的行数
  • m: 矩阵的列数

函数实现代码

offdiag <- function(k, n, m) {
  # 初始化全0矩阵
  mat <- matrix(0, nrow = n, ncol = m)
  # 遍历每一行填充连续的1
  for (i in 1:n) {
    start <- i
    end <- i + k - 1
    # 确保结束位置不超过列数
    if (end <= m) {
      mat[i, start:end] <- 1
    }
  }
  return(mat)
}

示例调用与结果

执行offdiag(3, 4, 6)后,输出如下:

> offdiag(3, 4, 6)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    0    0    0
[2,]    0    1    1    1    0    0
[3,]    0    0    1    1    1    0
[4,]    0    0    0    1    1    1

逻辑说明

  1. 先创建指定行列数的全0矩阵作为基础
  2. 对每一行,计算当前行中1的起始位置(等于行号)和结束位置(行号+窗口大小-1)
  3. 若结束位置不超过总列数,就将对应列的元素设为1,超出则保持0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:07:12