gpt4 book ai didi

C++ 两个矩阵的乘法

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:43 26 4
gpt4 key购买 nike

大家好,我看不出 [4x4] 矩阵乘法的逻辑:

void matrix::multiplicate( GLdouble nm[ 16 ] )
{
char x, a, b;
GLdouble tm[ 16 ];

for( x=0 ; x<16 ; x++ )
{
a = x % 4;
b = (x / 4) * 4;

tm[ x ] = nm[ a ] * mx[ b ] +
nm[ a+4 ] * mx[ b+1 ] +
nm[ a+8 ] * mx[ b+2 ] +
nm[ a+12 ] * mx[ b+3 ];
}

for( x=0 ; x<16 ; x++ )
mx[ x ] = tm[ x ];
}

当 for-loop(x = 0) 进行第一轮时 ab 为 0。这是合乎逻辑的 -> 第一行 * 第一列

tm[ 0 ] =     nm[ 0  ] * mx[ 0 ] +
nm[ 4 ] * mx[ 1 ] +
nm[ 8 ] * mx[ 2 ] +
nm[ 12 ] * mx[ 3 ];

但是现在 x = 1:第二行 * 第一列

tm[ 1 ] =     nm[  1 ] * mx[ 1 ] +
nm[ 5 ] * mx[ 2 ] +
nm[ 9 ] * mx[ 3 ] +
nm[ 13 ] * mx[ 4 ];

mx[4] 在第二列....它与 b 有关,但我不明白。

最佳答案

因为b是整数,所以b/4是整数除法,当x=1时,b/40,所以 b=0

所以 (x/4)*4 使 b 增加 4s。 b 将是 0,0,0,0,4,4,4,4,8,8,8,8...

关于C++ 两个矩阵的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23137178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com