如何使用特征库将大型二维阵列转换为稀疏矩阵?

时间:2017-02-10 03:01:02

标签: c++ eigen eigen3

我希望将一个简单的2D数组转换为SparseMatrix,以提高性能和运行时间,因为我正在处理大小在50,000-70,000之间的数组。

到目前为止我所拥有的:

<?php

namespace DW\UserBundle\Twig;

use DW\UserBundle\Service\UserService;
use Iflylabs\iFlyChat;

class ChatExtension extends \Twig_Extension
{
    /**
     * @var UserService
     */
    private $userService;

    /**
     * @var string
     */
    private $appId;

    /**
     * @var string
     */
    private $apiKey;

    /**
     * @param UserService $userService
     * @param string $appId
     * @param string $apiKey
     */
    public function __construct(UserService $userService, string $appId, string $apiKey)
    {
        $this->userService = $userService;
        $this->appId = $appId;
        $this->apiKey = $apiKey;
    }

    /**
     * @return array
     */
    public function getFunctions()
    {
        return [
            new \Twig_SimpleFunction("chat", [$this, "chat"])
        ];
    }

    public function chat()
    {
        $iflyChat = new iFlyChat($this->appId, $this->apiKey);
        echo $iflyChat->getHtmlCode();
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'chat_extension';
    }
}

编译器在模板参数列表中的参数1处返回类型不匹配值,用于&#39;模板类Eigen :: Map&#39;。 我知道我在这里遗漏了一些东西,但我无法理解。

1 个答案:

答案 0 :(得分:1)

制作一个密集矩阵并将其转换为稀疏矩阵:

double matrix[numCells * numCells]; // 1d array representation of your matrix
SparseMatrix<double> sp = Map<MatrixXd>(matrix,numCells,numCells).sparseView();