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

Julia中如何通过for循环创建矩阵?Matlab转用户技术问询

在Julia中用for循环创建矩阵的正确方法

先分析你遇到的错误

  1. Matlab原代码无法运行的原因:
    Julia不会像Matlab那样自动为未定义的变量创建数组并动态扩容,必须先初始化数组;另外Julia的索引语法是方括号[],而非Matlab的圆括号()。

  2. 你尝试的代码报错原因:
    Array{Int64, n}是数组类型对象,不是可写入的实际数组实例,自然无法用k[i] = i赋值。你需要创建具体的数组实例,比如用zeros、ones或Array{Int64}(undef, ...)初始化。


对应你Matlab代码的实现(创建100×1矩阵)

如果你要复刻Matlab代码生成的100行1列、每行元素为i²的矩阵,可按以下步骤:

n = 100
# 初始化一个n行1列的Int64类型矩阵,初始值为0
k = zeros(Int64, n, 1)
for i in 1:n
    # Julia用[]索引,行i、所有列赋值为i的平方
    k[i, :] = i^2
end

如果只需要一维向量(Julia中向量是一维数组,等价于Matlab的列向量),代码更简洁:

n = 100
k = zeros(Int64, n)
for i in 1:n
    k[i] = i^2
end

可选:动态扩容的循环写法(不推荐,效率较低)

如果想模拟Matlab自动扩容的逻辑,可先初始化空数组,再通过循环添加元素:

# 创建空的Int64类型向量
k = Int64[]
for i in 1:100
    # 向数组末尾添加元素i²
    push!(k, i^2)
end
# 若需转成二维矩阵,执行:k = reshape(k, :, 1)

额外提示(非循环写法,更符合Julia风格)

Julia中无需循环也能快速生成相同结果,比如:

  • 生成器表达式:k = [i^2 for i in 1:100]
  • 广播操作:k = (1:100).^2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:40:28