簡體   English   中英

為什么我的矩陣乘法器不工作?

[英]Why my Matrix multiplicator isn't working?

我試圖在 lua 中創建一個矩陣乘法器,但是當 C[x][y] 退出 for 循環時,C[x][y] 表得到一個錯誤的值。 有誰能夠幫助我?

代碼:


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

    local C = {}
    local Model = {}
    for l=1,#A,1 do
        table.insert(Model, 0)
    end
    for l=1,#A,1 do
        table.insert(C, Model)
    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

終端:開始 7 22 10 32 -- 2 22 22 32 32 22 22 32 32 結束

C:\用戶\保羅\桌面>

您的代碼的問題是您沒有正確初始化 C 表的值。 當您將 Model 表插入 C 時,它是插入對同一個表的引用,因此當您更改 Model 的值時,它也會更改 C 的值。

要解決此問題,您需要為 C 的每個元素創建一個新表。您可以通過更改行來完成此操作

table.insert(C, Model)

table.insert(C, {unpack(Model)})

這將為 C 的每個元素創建一個新表,因此當您更改 Model 的值時,它不會影響 C 的值。

進行此更改后,您的代碼應按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM