0

我有两个 3x3 浮点数组。我将它们存储为两个一维数组并编写了以下代码来将它们相乘(这里,s3 是输出矩阵):- MULTIP1: li $t8,4 # $s7 具有数组 s2 的地址,$s4 具有数组 arr
la的地址$t9,s3 里 $t1,0 里 $t2,1 里 $t3,0 里 $t4,1

LOOP1:
 beq $t4,$t8,MULTIP2    #multip2 is the next segment of program
 li $t2,1
ENTER1:
beq $t2,$t8,UP1
li $t0,1
LOOP2:
  beq $t0,$t8,UP2
ENTER2:
  lwc1 $f22,0($s7)
  lwc1 $f24,0($s4)
  mul.s $f8,$f22,$f24
  add.s $f10,$f10,$f8
  swc1 $f10,0($t9)

  addi $s7,$s7,4
  addi $s4,$s4,12
  addi $t0,$t0,1
  j LOOP2
UP2:
  l.s  $f10,zero
  addi $t9,$t9,4
  addi $t1,$t1,4     #update column of second matrix
  la $s7,s2
  add $s7,$s7,$t3
  la $s4,arr
  add $s4,$s4,$t1
  addi $t2,$t2,1
  j ENTER1
UP1:

  addi $t3,$t3,12
  la   $s7,s2
  add  $s7,$s7,$t3  #update row of first matrix
  la   $s4,arr
  addi $t4,$t4,1
  j LOOP1

这段代码只正确给出了预期输出矩阵的第一行……其余的都搞砸了……请帮忙!!!

4

1 回答 1

0
  • 这不只是两个 3x3 矩阵的点积吗?
  • 2 个 3x3 矩阵的点积得到一个 3x3 矩阵
  • 假设 2 个 3x3 矩阵:A 和 B。
  • 矩阵 C 的乘积,其中 C = AB 如下:

    A = [a11, a12, a13] [a21, a22, a23] [a31, a32, a33]

    B = [b11, b12, b13] [b21, b22, b23] [b31, b32, b33]

    C = [c11, c12, c13] [c21, c22, c23] [c31, c32, c33]

    c11 = a11*b11+a12*b21+a13*b31 c12 = a11*b12+a12*b22+a13*b23 c13 = a11*b13+a12*b23+a13*b32 c21 = a21*b11+a22*b21+a23 *b31 c22 = a21*b12+a22*b22+a23*b32 c23 = a21*b13+a22*b23+a23*b33 c31 = a31*b11+a32*b21+a33*b31 c32 = a31*b12+b32*b22 +a33*b32 c33 = a31*b13+a32*b23+a33*b33

于 2012-09-23T19:40:00.733 回答