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

Julia中填充多维数组报错问题求助

Julia中填充多维数组报错问题求助

嘿,我来帮你梳理下这个问题~

首先先明确你的需求:你想要创建一个数组X,其中每个X[i]都是一个向量,包含所有k*h[i]的值,这里k的取值范围是从0到floor(Int, 15/h[i])+1,对吧?

先看你写的代码:

h=[0.01 0.02 0.04 0.08 0.1 0.2 0.5 0.8]
X=[k*h[i] for k in 0:floor(Int,15/h[i])+1 for i in 1:8]

你遇到报错的核心原因有两个:

  • 循环顺序搞反了:你先遍历k再遍历i,但计算k的范围时需要用到h[i],这时候i还没被迭代,Julia会找不到i的定义,直接抛出UndefVarError。
  • 结构不符合预期:就算循环顺序对了,原来的推导式会生成一个扁平的一维数组,而不是每个i对应一个独立向量的多维结构。

下面是修正后的方案:

步骤1:调整h的结构(可选但更直观)

你原来的h是一个1×8的行矩阵,改成一维向量会更方便后续操作:

h = [0.01, 0.02, 0.04, 0.08, 0.1, 0.2, 0.5, 0.8]

步骤2:生成符合需求的X

用嵌套的数组推导式,先遍历h中的每个元素,再为每个元素生成对应的k*hi向量:

X = [ [k * hi for k in 0:floor(Int, 15/hi)+1] for hi in h ]

这样X就是一个包含8个元素的数组,每个元素都是对应h[i]的目标向量。比如X[1]会包含从0到15.01、步长为0.01的所有值,完全符合你的要求。

如果你坚持要用索引i来遍历,也可以写成这样:

X = [ [k * h[i] for k in 0:floor(Int, 15/h[i])+1] for i in 1:length(h) ]

备注:内容来源于stack exchange,提问作者Hariz Khaled

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:57:33