R语言使用嵌套for循环将向量转换为指定Toeplitz矩阵的实现方法
R语言嵌套for循环手动生成指定Toeplitz矩阵实现
你原有代码的问题是仅覆盖了对角线和上三角的赋值逻辑,完全没有处理下三角区域,且对角线取值固定为x[3],和目标矩阵对角线全为1的要求不符。
首先明确取值规律:观察目标矩阵与向量x = c(1,2,3,4,5)的对应关系:
- 对角线元素(行号i=列号j)统一取
x[1]即1 - 上三角区域(i<j),列号减行号的差为1时取
x[2]、差为2时取x[3] - 下三角区域(i>j),行号减列号的差为1时取
x[4]、差为2时取x[5]
修正后的嵌套for循环代码如下:
x <- c(1:5) mat <- matrix(nrow = 3, ncol = 3) for (i in 1:3) { for (j in 1:3) { d <- j - i if (d >= 0) { # 处理对角线和上三角区域 mat[i,j] <- x[d + 1] } else { # 处理下三角区域 mat[i,j] <- x[3 + abs(d)] } } } # 输出验证 print(mat)
运行后输出结果完全匹配需求:
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 1 2 [3,] 5 4 1
内容的提问来源于stack exchange,提问作者Iftikhar
相关产品推荐
相关产品推荐

