gpt4 book ai didi

opencv - cvMulTransposed和输出矩阵的尺寸?

转载 作者:行者123 更新时间:2023-12-02 16:43:29 24 4
gpt4 key购买 nike

这可能看起来像是一个愚蠢的问题,但是我在乘法之后无法处理矩阵的输出大小..根据基本知识,如果矩阵A具有m * n,矩阵B具有J * k,那么它们的乘积将为尺寸m * k

所以根据下面的代码:

CvMat *meh, *meh2;
meh = cvCreateMat(2, 9, CV_32FC1);
meh2 = cvCreateMat(2, 2, CV_32FC1);
cvMulTransposed(meh, meh2, 1);
cvSave( "meh.txt", meh2 );

meh是2行9列矩阵,所以它的转置将是9行2列矩阵吧?并将其相乘得到2行2列的矩阵(2 * 9乘以9 * 2)。

这就是我作为输出矩阵meh2创建的结果。这是将输出保存到文本的方法:
   %YAML:1.0
meh: !!opencv-matrix
rows: 2
cols: 2
dt: f
data: [ -431602080., -431602080., -431602080., -431602080. ]

可以看出它充满了垃圾值。

但是当我更改代码以使输出为9 * 9矩阵时,我可以在保存的文件中看到实际的乘数值。

在这里,乘法后的输出矩阵不具有第一矩阵的行和第二矩阵的行吗?

干杯

最佳答案

这是函数的声明:

void cvMulTransposed(const CvArr* src, CvArr* dst, int order, const CvArr* delta=NULL, double scale=1.0)

您使用order = 1,则意味着乘法是这样完成的:
dst = scale* transpose[(src-delta)] * (src-delta)

如果使用0阶,则乘法为:
dst = scale* (src-delta) * transpose[(src-delta)]

在您使用order = 1的情况下,最终矩阵为:
  (9,2)     x     (2,9)       =    (9,9)
transpose not transpose result

This is where you can get the documentation of the function

关于opencv - cvMulTransposed和输出矩阵的尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6765732/

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