gpt4 book ai didi

c# - 无法将 'Emgu.CV.Matrix'类型隐式转换为'double

转载 作者:行者123 更新时间:2023-12-02 17:51:13 28 4
gpt4 key购买 nike

我有一个矩阵,它的坐标是1X3,coordinatePointPrev,还有另一个矩阵,它的坐标是3X1,coordinatePointCurrFrame。最后一个矩阵称为3X3的基金;全部定义为矩阵。

现在,我想将ordinatePointPrev * fund * ordinatePointCurr 乘以并将结果保存在'resultOfEq'中,但是对于第六行,我遇到了错误,说“无法将类型'Emgu.CV.Matrix'隐式转换为'double ”;

我要去哪里了

   Matrix<double> resultOfEq = new Matrix<double>(1, n);    
for (int i = 0; i < n; i++)
{
Matrix<double> coordinatePointPrev = new Matrix<double>(new double[,] { { a,b, 1 } });
Matrix<double> coordinatePointCurr = new Matrix<double>(new double[,] { {c, d, 1 } });
resultOfEq[0, i] = coordinatePointPrev.Mul(fund).Mul(coordinatePointCurr);
}

最佳答案

尝试将矩阵分配给另一个 double 矩阵的一个单元格时,Mul方法返回矩阵。

你想要的是这样的
resultOfEq[0, i] = coordinatePointPrev.Mul(fund).Mul(coordinatePointCurr)[0,0];
这应该通过编译器。但是我不确定它是否可以工作(我不知道这个特定的库,但是其他任何一个都可能在Mul调用之一时崩溃)。

1X3矩阵(coordinatePointPrev)* 3X3矩阵(基金)= 1X3矩阵

1X3矩阵* 1X3(coordinatePointCurr)矩阵会产生错误,因为您需要3X1矩阵才能使用乘法运算符并生成您最可能想要的1X1矩阵。

因此,我相信您希望其中一个(coordinatePointCurr)为3X1:
new Matrix<double>(new double[,] { {c}, {d}, {1} } })
或您需要使用不同的乘法顺序,因为第一个矩阵的列必须与第二个矩阵的行相同(并且矩阵乘法不是可交换的(A * B <> B * A))

我还要提醒一下,在foreach中没有使用索引器i,因此它基本上会进行i次相同(硬)的计算,以使i次获得相同的结果,并生成充满相同数字的1Xn矩阵。

关于c# - 无法将 'Emgu.CV.Matrix<double>'类型隐式转换为'double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670538/

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