c++与matlab的互相关
Cross correlation c++ and matlab
我正在尝试用C++进行互相关。问题是我在matlab中并没有得到同样的结果。
C++代码
float telo[5] = {-1, 0, 1, 2, 3};
Mat prueba(1, 5, CV_32F, telo);
float telo2[3] = { 0, 1, 2 };
Mat prueba2(1, 3, CV_32F, telo2);
Mat result;
matchTemplate(prueba, prueba2, result, CV_TM_CCORR);
Result: 2048.0004882812500 2.660783784765e-314#DEN -6.2774385622041925e+066
Matlab代码:
a = [-1,0,1,2,3]
b = [0,1,2]
xcorr2(a,b)
Result: -2 -1 2 5 8 3 0
我做错了什么?
当我用OpenCV 3尝试您的C++代码示例时,我得到了如下结果,正如预期的那样:
2, 5, 8
这与Matlab解决方案相同,但没有尾部。
编辑:
为了获得与Matlab相同的结果,您可以在输入数据中添加一些零填充。在您的数据中手动执行:
float telo[9] = {0, 0, -1, 0, 1, 2, 3, 0, 0};
Mat prueba(1, 9, CV_32F, telo);
或者一个更通用的解决方案(也应该适用于2D数据(是调用
copyMakeBorder(prueba, prueba, prueba2.rows - 1, prueba2.rows - 1, prueba2.cols - 1, prueba2.cols - 1, cv::BORDER_CONSTANT);
在CCD_ 1之前。
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- MATLAB to C++: csvread() not supported by MATLAB Coder
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- MATLAB:跟踪imufilter对象中的状态变化
- 如何将 c++ 中的客户端 TCP 的替身列表发送到 Matlab 中的 TCP 服务器?
- 将三角函数的正确值与matlab进行比较
- 连接 MATLAB 和 Visual Studios 的问题
- 如何将C++连接到 Matlab
- 如何发送 Mat H=findHomography 返回 Matlab
- 如何在C++中编写 MATLAB fix(X) 函数?
- 提供变量作为 MATLAB 系统命令的输入参数,以便C++可执行文件
- 有没有更好的方法可以使用特征/C++实现 matlab 的逻辑索引?
- 当我运行MEX文件时,MATLAB崩溃
- 从 MATLAB 到 C++:相当于带有选项 'remove' 的 bwmorph
- MATLAB的imfinfo in openCV
- 将C++中的多个参数传递给MatLab共享库函数
- 将 matlab 数组(MAT-文件)转换为C++数组
- 数组数据以错误的方式遍历 Python/Matlab