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

0

как я могу перебирать строки и столбцы разреженной матрицы в Eigen?

У меня есть строка с малой разреженной матрицей, которую я хочу сделать на этих командах Matlab:

г = сумма (Н, 1)

r2 = сумма (Н, 2)

где H - разреженная матрица (0,1), r и r2 - целые векторы. Я думаю, что я должен уметь выполнять итерацию по строке и столбцу, чтобы сделать это. любое предложение будет оценено.

заранее спасибо.

  • 0
    Что вы подразумеваете под H(p==1,2) ? Ты имеешь в виду, что p == 1 или p == 2?
  • 0
    @kkuilla извините, я ошибся. Я редактировал это. когда мы записываем сумму (H, 2), она возвращает вектор, содержащий сумму каждой строки в индексах, а для суммы | (H, 1) возвращает сумму каждого столбца.
Показать ещё 2 комментария
Теги:
eigen
sparse-matrix
eigen3

1 ответ

1

Возможно, вы захотите взглянуть на очень полезную ссылку на преобразование eigen/matlab: http://eigen.tuxfamily.org/dox/AsciiQuickReference.txt

В вашем случае это означает:

r  = H.colwise().sum() // sum(H, 1)
r2 = H.rowwise().sum() // sum(H, 2)

РЕДАКТИРОВАТЬ

Как вы указали, разреженные матрицы не поддерживают эти функции. Вероятно, вам придется его повторно реализовать. Я предлагаю получить разницу с https://forum.kde.org/viewtopic.php?f=74&t=122971

В вашем примере sum(H, 1) ее можно записать в виде:

r = H * VectorXd::Ones(H.cols())
  • 0
    В классе sparseMatrix нет членов colwise () или rowwise ().
  • 0
    когда я пишу "VectorXd :: Ones", я говорю, что VectorXd не имеет единицы.? !!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню