#c #eigen #eigen3
#c #eigen #eigen3
Вопрос:
В собственной документации, которая в целом довольно хороша, я вижу ссылки на rows()
метод MatrixBase
. В настоящее время я пытаюсь найти способ получить количество строк в матрице, не зная ориентации (основной строки / столбца) матрицы, поэтому было бы действительно удобно просто вызвать rows()
.
Но я нигде не могу найти это задокументировано. Что это за метод? Что он делает? Он просто возвращает Eigen::Dynamic
для динамических матриц или знает количество строк?
Просматривая справочную страницу для MatrixBase, я вижу несколько упоминаний MatrixBase::rows()
, но ссылки нет… Есть идеи?
Ответ №1:
rows()
Метод действительно возвращает номера строк. Он определен в классе EigenBase
, подклассом которого MatrixBase
является. Его документация находится по адресу http://eigen.tuxfamily.org/dox/structEigen_1_1EigenBase.html#a5552abd83dbd03c85cea6d61fd8875a5 . Один из способов найти его — ввести «строки» в поле поиска в правом верхнем углу собственной документации, а затем нажать «строки» в появившемся всплывающем окне; откроется список rows()
методов, определенных в библиотеке, в том числе EigenBase::rows()
.
В документации это явно не указано, но rows()
метод возвращает фактическое количество строк, определенное во время выполнения. Константа RowsAtCompileTime
возвращает Dynamic
для матриц динамического размера и количество строк для матриц статического размера.
Упоминания MatrixBase::rows()
в документации — это пережиток прошлого, который необходимо устранить. Спасибо за ваши комплименты по поводу документации, но мы знаем, что ее можно улучшить.
Ответ №2:
Ну, MatrixBase
является производным от DenseBase
которого, в свою очередь, Является производным от DenseCoeffBase
(с параметрами шаблона и т. Д.). Там определена функция row(): http://eigen.tuxfamily.org/dox/structEigen_1_1EigenBase.html#a5552abd83dbd03c85cea6d61fd8875a5
Doxygen говорит, что функция возвращает «количество строк»..