小编Cat*_*IAS的帖子

本征矩阵乘法非常慢

我已经实现了高斯-牛顿优化过程,该过程涉及通过求解线性化系统来计算增量Hx = b。该HMATRX由下式计算H = J.transpose() * W * Jb由下式计算b = J.transpose() * (W * e),其中e是误差矢量。雅可比行列式是一个n×6矩阵,其中n以千为单位,并且在迭代过程中保持不变,并且W是一个n×n对角线权重矩阵,该矩阵将在迭代过程中发生变化(某些对角线元素将设置为零)。但是我遇到了速度问题。

当我不添加权重矩阵W,即H = J.transpose()*J和时b = J.transpose()*e,我的高斯-牛顿过程可以在0.02秒内非常快地运行30次迭代。但是,当我添加在W迭代循环之外定义的矩阵时,它变得如此之慢(30次迭代需要0.3〜0.7秒),并且我不知道这是我的编码问题还是通常花费了这么长时间。

这里的所有内容都是本征矩阵和向量。

我根据反方差向量在Eigen库中W使用.asDiagonal()函数定义了矩阵。然后将其用于Had 的计算中b。然后它变得非常缓慢。我希望得到一些有关这种巨大放缓的潜在原因的提示。

编辑:

只有两个矩阵。雅各布派肯定是密集的。权重矩阵是通过来自vec.asDiagonal()密集库的函数从矢量生成的,因此我认为它也是密集的。

代码非常简单,导致时间变化的唯一区别是权重矩阵的增加。这是一个代码片段:

for (int iter=0; iter<max_iter; ++iter) {
    // obtain error vector
    error = ...  
    // calculate H and b - the fast one …
Run Code Online (Sandbox Code Playgroud)

c++ optimization matrix eigen

5
推荐指数
1
解决办法
799
查看次数

cmake -D <var>:<type> = <value>参数"-D"是什么意思

我正在尝试使用cmake来安装opencv.在opencv指令页面中,我找到以下示例:

cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
Run Code Online (Sandbox Code Playgroud)

据我了解,我应该使用cmake在我创建的新目录中生成Makefile,在这个例子中应该是〜/ opencv/release.但我不太明白最后一行.在cmake帮助中,我发现:

cmake -D <var>:<type>=<value> = create a cmake cache entry
Run Code Online (Sandbox Code Playgroud)

这是什么意思?特别是这部分:"<var>:<type>=<value>",我不明白为什么的例子给出了"CMAKE_BUILD_TYPE=RELEASE""CMAKE_INSTALL_PREFIX=/usr/local .."

非常感谢您的帮助!

c++ opencv cmake

4
推荐指数
1
解决办法
2539
查看次数

有没有办法在MATLAB中对这个循环进行矢量化?

我希望对此循环进行矢量化.此循环用于获取图像像素的坐标并按行顺序形成数组.

rows = 812; % 812x650 image
cols = 650;
n=rows*cols; % total number of pixels

index = zeros(n,2); % n coordinates of image pixels
pt_homo = zeros(3,1,n); % [x,y,1]'

k=1;
for r=1:rows
    for c=1:cols
        index(k,1)=c;
        index(k,2)=r;
        pt_homo(1,1,k) = c;
        pt_homo(2,1,k) = r;
        pt_homo(3,1,k) = 1;
        k=k+1;
    end
end
Run Code Online (Sandbox Code Playgroud)

matlab vectorization

0
推荐指数
1
解决办法
41
查看次数

标签 统计

c++ ×2

cmake ×1

eigen ×1

matlab ×1

matrix ×1

opencv ×1

optimization ×1

vectorization ×1