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

Lua方阵乘法器计算异常求助:循环结束后结果值错误

方阵乘法器结果矩阵取值错误排查

问题根源

你代码里创建结果矩阵C的时候踩了Lua表引用的坑:所有行都用了同一个Model表。Lua里表是引用类型,多次执行table.insert(C, Model)后,C的每一行其实都是指向同一个表的指针。改其中一行的元素,所有行的对应位置都会跟着变,最后所有行的结果全被最后一次计算的值覆盖了。

修正后的代码

function Matrix_Multiplicator_Square(A,B)
    if not(#A == #B) then
        error("Hey! The matrix is not square.")
    end

    local C = {}
    -- 给每一行单独建新表,不再复用同一个Model
    for l=1,#A,1 do
        local row = {}
        for k=1,#A,1 do
            table.insert(row, 0)
        end
        table.insert(C, row)
    end

    for y=1,#A,1 do
        for x=1,#A,1 do
            for i=1,#A,1 do
                C[x][y] = C[x][y] + A[x][i]*B[i][y] 
            end
            print(C[x][y])
        end 
    end
    print("     --     ",#A)
    for y=1,#A,1 do
        for x=1,#A,1 do
            print(C[x][y])
        end
    end

    return C
end

修改说明

  • 删掉了原来的Model表,改成在循环里为每一行生成全新的空表并填充0,确保每一行都是独立的,互相不会干扰。
  • 乘法计算的逻辑没动,是正确的。

效果验证

拿2阶矩阵测试,比如:

local A = {{1,2}, {3,4}}
local B = {{5,6}, {7,8}}

修正后运行,第一次循环打印的7、22、10、32是正确结果,后续遍历矩阵C时会输出同样的数值,不会再出现所有行值相同的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:55:30