2016-07-10 2 views
0

Я нахожу синтаксис Эйгена более громоздким, чем другие библиотеки числовых линейных алгебр, с которыми я работал: numpy, MATLAB и armadillo. Поэтому я пишу кучу «вспомогательных» функций, расширяя синтаксис Эйгена. (См. an earlier question of mine)Расширение Eigen с лучшим синтаксисом/наименованием

Мой вопрос в том, что еще не сделано?

Я знаю, что libigl have added some MATLAB-esque function s, но мне интересно, есть ли еще?

Я стараюсь не изобретать колесо здесь.

Приведем несколько примеров:

swap_rows(i, j), swap_cols(i, j), reshape, коэффициент-накрест функции, такие как abs, log и т.д.

Я пытаюсь написать код более читаемым.

ответ

1

Matlab и numpy не имеют понятия выражения, их функция всегда работает на реальной матрице, либо созданной вами матрицей, либо временным буфером. Eigen, с другой стороны, использует выражения шаблонов, чтобы избежать буфера временной памяти. Его функции должны работать как на матрицах, так и на выражениях, вероятно, поэтому функции, подобные reshape, не реализованы. Eigen имеет тенденцию оставлять функции, для которых требуется временный буфер для пользователей, чтобы они могли контролировать, когда и где появляется буфер.

Коэффициентные функции уже существуют. Более подробную информацию см. В следующей ссылке.

http://eigen.tuxfamily.org/dox/group__QuickRefPage.html

+0

Спасибо, но я не говорю, что вещей там нет. Я говорю, что синтаксис непривлекателен. Я не могу быть первым человеком, который не хочет писать 'myvec.array(). Abs()', когда это может быть просто 'abs (myvec)'. То же самое для 'swap': мне гораздо труднее разобрать' A.row (i) .swap (A.row (j)) ', чем' A.swap_rows (i, j) 'или даже' swap_rows (A , i, j). Я ищу тонкий слой приятного синтаксиса, созданного на вершине Эйгена. –

+1

@krey 'myvec.cwiseAbs()' будет лучше. О '.abs()' vs. 'abs (...)', я предпочитаю первый, так как он объектно-ориентирован. 'A.row (i) .swap (...)' также объектно-ориентированный (начиная с объекта 'A', а не из команды' swap'). Он также может заменять любой вектор '...', а не только еще одну строку. В принципе, я думаю, вы не можете сказать, чей синтаксис лучше. Вы можете только сказать, чей синтаксис больше похож на Matlab. – kangshiyin

+0

ОК, так что я ищу что-то, что заставляет его больше походить на MATLAB;) –

Смежные вопросы