Как умножить две матрицы 4х4, записанные в виде двух 16-элементных массивов? - PullRequest
1 голос
/ 15 февраля 2012

Мне нужно, чтобы матрица 4x4 была такой:

1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 16

, представленной в виде массива, подобного следующему:

[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]

Как мне умножить две такие "матрицы"?Я боролся с тем, как сделать работу в течение нескольких дней.Я думаю, что это потребует три петли?Может два?Они пойдут в 4 или 16?Некоторый псевдокод был бы очень признателен: (

1 Ответ

3 голосов
/ 15 февраля 2012

Я думаю, что сделал это!

результат = A * B:

for(var k=0; k<=12; k+=4){
    for(var i=0; i<4; i++){
        for (var j=0, bCount=0; j<4; j++, bCount+=4){
            result[k+i] += A[k+j%4] * B[bCount+i%4];
        }
    }
}
...