交错/去交错双精度 [关闭]

Interleave / Deinterleave double's [closed]

提问人:Richard Steffen 提问时间:11/14/2023 最后编辑:Some programmer dudeRichard Steffen 更新时间:11/14/2023 访问量:51

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

7天前关闭。

给定 3 个单独的数据指针 x,y,z 我想交错双精度数据。

目前我的代码如下所示。


    pc::Mat3d X(1, num);
    double *sptrX = x_.ptr<double>();
    double *sptrY = y_.ptr<double>();
    double *sptrZ = z_.ptr<double>();
    pc::Vec3d *dptr = X.ptr<pc::Vec3d>();

    for (int i = 0; i < num; ++i)
    {
        dptr[i][0] = sptrX[i];
        dptr[i][1] = sptrY[i];
        dptr[i][2] = sptrZ[i];
    }

我想加快速度,也许使用intrisics。有什么建议可以加快速度吗? 诚挚的问候,里克

C++ OpenCV

评论

0赞 Some programmer dude 11/14/2023
编辑您的问题,向我们提供有关您尝试解决的原始问题的更多详细信息。另外,请告诉我们您正在使用什么库或框架(它实际上可能已经具有功能)。
0赞 Some programmer dude 11/14/2023
如果您还没有这样做,那么请花一些时间阅读帮助页面,参加 SO 导览如何提问。另外,请阅读有关如何编写“完美”问题的信息,尤其是其清单
0赞 Richard Steffen 11/14/2023
我们使用 OpenCV Mat1d/Mat3d/Vec3d。但问题与我们使用的库无关。人们也只能将其表述为指针。
1赞 Dan Mašek 11/14/2023
看起来你正在重新发明cv::merge
0赞 Thomas Matthews 11/15/2023
我建议使用向量而不是并行数组。这通常更有效,因为 和 将位于同一数据缓存行上。对于并行数组,Z 值可能与 X 值不在同一数据缓存中。structX, Y, Z

答: 暂无答案