Добавление скаляра к собственной матрице (вектор)

Я только начал использовать библиотеку Eigen и не могу понять, как добавить скалярное значение ко всем членам матрицы?

Предположим, что у меня есть матрица:

Eigen::Matrix3Xf mtx = Eigen::Matrix3Xf::Ones(3,4);
mtx = mtx + 1;    // main.cxx:104:13: error: invalid operands to binary expression ('Eigen::Matrix3Xf' (aka 'Matrix<float, 3, Dynamic>') and 'int')

Я ожидаю, что результирующая матрица будет заполнена 2

Собственные массивы имеют методы и операторы для сложения и умножения с учетом коэффициентов.

Mansoor 26.12.2020 12:13
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
6 667
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Выполняя быстрый поиск в документации этой библиотеки, кажется, что такого метода нет. На самом деле в матричной алгебре обычно нет скалярной суммы. Вы можете реализовать такой метод самостоятельно, просто добавив скаляр к каждому компоненту матрицы i,j, перебирая все столбцы и строки.

Однако вы уверены, что не имели в виду скалярное умножение?

Спасибо за ответ. В матлабе есть такая операция как прибавление скаляра к матрице (вектору) и это сильно упрощает вычисления.

Kerim 26.12.2020 12:13
Ответ принят как подходящий

Поэлементные операции с Eigen лучше всего выполнять в области Array. Ты можешь сделать

mtx.array() += 1.f;

Чуть более подробный вариант:

mtx += Eigen::Matrix3Xf::Ones(3,4);

Вы также должны рассмотреть возможность определения mtx как Array3Xf в первую очередь:

Array3Xf mtx = Eigen::Array3Xf::Ones(3,4);
mtx += 1.f;

Если вам затем нужно использовать mtx в качестве матрицы (т. Е. В матричном произведении), вы можете написать

Vector3f v = mtx.matrix() * w; 

Спасибо за ответ. Array3Xf mtx = Eigen::Array3Xf::Ones(3,4); просто позволяет мне использовать его как матрицу/вектор или есть еще какие-то преимущества?

Kerim 26.12.2020 14:23

Пожалуйста, прочтите страницу с быстрой ссылкой документа Eigen: eigen.tuxfamily.org/dox/group__QuickRefPage.html

chtz 26.12.2020 14:39

Другие вопросы по теме