от
Я работаю с большим набором данных, где в реальной и мнимой части комплексной матрицы хранятся отдельно в файл, и я хотел бы создать Эйген::MatrixXcd из таких данных:
   // read data, note that real and imag data are stored separately
   // and the file reader API only allow read them in continuous fashion. 
   MatrixXd buf(nrow, ncol * 2);
   get_realpart_from_file(buf.data(), nrow * ncol);
   get_imagpart_from_file(buf.data()   nrow * ncol, nrow * ncol);
   // the above takes about 4 sec for a ~2 GB data block.
   // now we have buf contains [ ... ]
   // but we would like access the data as complex matrix
   ???? what to do there?
Наивный способ для копирования данных следующим образом:
   MatrixXd data;
   data = buf.block(0, 0, nrow, ncol)   buf.block(0, ncol, nrow, ncol) * std::complex(0, 1);
но это заняло 22 секунды для этого 2ГБ блок. Мне было интересно, если есть более умный способ сделать это, что похож на:
   Map data(buf.data(), {some magic});
   // use data like a complex matrix
Какие-либо предложения?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
...