Работа с Rcpp::List матриц с плотными или разреженными типами матрицC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Работа с Rcpp::List матриц с плотными или разреженными типами матриц

Сообщение Anonymous »

Мне нужно выполнить вычисления для каждой записи матрицы в Rcpp::List. Список содержит произвольную комбинацию плотных и разреженных матриц. Этот список передается в C++ из R. Мой вопрос касается как подходов к реализации, так и эффективности. Моя текущая мысль состоит в том, чтобы перебрать каждый элемент списка, проверить его тип (плотный или разреженный) и сгенерировать Arma::mat или Arma::sp_mat для элемента и использовать его для расчеты, желательно без копирования. Меня смущает следующее:
  • Как проверить, является ли тип матрицы плотным или разреженным, из Rcpp::List[d], где d является индексом?
  • Я могу использовать расширенный конструктор для Arma::mat через NumericMatrix, который позволяет избежать копирования (как показано ниже), но я не знаю, как сделать то же самое с арма::sp_mat. Эти матрицы большие, и я хочу избежать копирования.

Код: Выделить всё

Rcpp::NumericMatrix Ad = RcppListObject[d];
arma::mat ad=arma::mat( Ad.begin(), Ad.nrow(), Ad.ncol(), false );
//any needed calculations based on the d^{th} entry uses `ad`.
  • Тесно связанный со 2, мне нужно будет выполнить множество вычислений с d^{th матрица в списке в разных точках алгоритма. Нужно ли мне каждый раз выполнять два шага, отмеченные в пункте 2, прежде чем я смогу выполнять с его помощью вычисления, или есть более эффективный путь? (Например, может ли Arma::field помочь и обработать комбинацию матриц Arma::mat и Arma::sp_mat без копирования? )
Большое спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... trix-types
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Является ли `[] (std :: list и list) {return std :: move (list);} (list)` гарантированно оставить `list` yelm?
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Смешение модулей Rcpp и Rcpp::export
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Rcpp, изучение Rcpp и C++ на Mac
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как построить двухветвевую модель Keras с плотными слоями и слоями Conv2D?
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Автоматическая адаптация к Arma::mat или Arma::sp_mat в Rcpp::List?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»