[英]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.