矩阵乘法在opencv错误

  • 本文关键字:opencv 错误 opencv
  • 更新时间 :
  • 英文 :


我知道在opencv中有3种乘法矩阵的方法,一种是:

cvGEMM(M1, M1T, 1, NULL, 0, Mult, 0);

:

cvMulTransposed(M1, Mult, 0);
第三:

cvMul(M1, M1T, Mult);

基本上就是矩阵乘以它的转置。乘法后的矩阵应该是对称的。但是上面的每个方法都给了我一个不对称的和完全错误的输出。这是原始的(M1)矩阵:

rows: 5
   cols: 50
   dt: f
   data: [ 60., 89., 86., 102., 58., 51., 143., 187., 140., 64., 80.,
       169., 184., 172., 67., 90., 174., 191., 175., 41., 97., 86., 171.,
       104., 87., 145., 164., 176., 157., 119., 176., 177., 180., 179.,
       150., 44., 182., 148., 182., 38., 48., 197., 171., 171., 39., 48.,
       169., 163., 141., 39., 93., 149., 169., 184., 56., 120., 166.,
       182., 168., 144., 132., 172., 187., 173., 157., 164., 157., 152.,
       166., 172., 175., 157., 133., 170., 140., 180., 164., 173., 175.,
       152., 178., 176., 166., 143., 158., 177., 186., 172., 138., 141.,
       182., 191., 169., 159., 34., 185., 154., 155., 171., 32., 81.,
       154., 163., 112., 52., 126., 163., 183., 165., 53., 136., 176.,
       184., 174., 51., 148., 173., 178., 139., 160., 158., 147., 163.,
       154., 135., 146., 157., 181., 161., 79., 39., 172., 187., 174.,
       45., 44., 187., 153., 173., 39., 46., 187., 145., 160., 36., 38.,
       177., 155., 150., 37., 81., 154., 163., 112., 52., 126., 163.,
       183., 165., 53., 136., 176., 184., 174., 51., 148., 173., 178.,
       139., 160., 158., 147., 163., 154., 135., 146., 157., 181., 161.,
       79., 39., 172., 187., 174., 45., 44., 187., 153., 173., 39., 46.,
       187., 145., 160., 36., 38., 177., 155., 150., 37., 76., 165.,
       195., 110., 100., 131., 180., 188., 184., 73., 146., 179., 193.,
       183., 96., 117., 148., 146., 185., 97., 104., 147., 157., 174.,
       172., 129., 171., 177., 181., 173., 123., 126., 186., 194., 171.,
       91., 74., 109., 194., 145., 33., 117., 166., 180., 176., 35., 77.,
       155., 152., 177. ]

但是将它乘以它的转置得到:

rows: 5
   cols: 5
   dt: f
   data: [ 927321., 1014163., 923303., 923303., 947641., 1014163.,
       1260101., 1062130., 1062130., 1102823., 923303., 1062130.,
       1004488., 1004488., 990651., 923303., 1062130., 1004488.,
       1004488., 990651., 947641., 1102823., 990651., 990651., 1116004. ]

的值是不对称的,他们怎么变得这么大是我不明白的?

cvmultranssed和cvGEMM给出的结果与上面复制的相同。cvMul给出一些运行时错误并返回垃圾值。有什么建议吗?

除了预期的大输出值(japreis已经告诉过您了)之外,您得到的矩阵是对称的。

为了更好的可读性我已经对齐了:

reshape(a,5,5)
ans =
      927321     1014163      923303      923303      947641
     1014163     1260101     1062130     1062130     1102823
      923303     1062130     1004488     1004488      990651
      923303     1062130     1004488     1004488      990651
      947641     1102823      990651      990651     1116004

所以,这里没有任何问题,如果你去问为什么X将来会出现,你应该仔细检查X是否确实如此…

我无法解释为什么不对称,但这些数字的大小是我所期望的。当你做矩阵乘法的时候你取第一行和第二列的内积。由于您的行有50个元素,并且您的元素在50-200范围内,因此输出矩阵中的元素将在50*100*100 = 500000左右。

相关内容

  • 没有找到相关文章

最新更新