Я реализую функцию maxmin, она работает как умножение матриц, но вместо суммирования продуктов она получает максимум минимума между двумя числами поточечно. Пример наивной реализации:
double mx = 0;
double mn = 0;
for (i = 0; i < rowsC;i++)
{
for(j = 0; j < colsC;j++)
{
mx = 0;
for(k = 0; k < colsA; k++)
{
if (a(i, k) < b(k, j))
mn = a(i,k);
else
mn = b(k,j);
if (mn > mx)
mx = mn;
}
c(i, j) = mx;
}
}
Я кодирую его как файл Octave Octave, поэтому мне приходится использовать структуру данных oct.h. Проблема в том, что я хочу реализовать разреженную версию, но обычно вам нужна ссылка на следующий ненулевой элемент в строке или столбце, как в этом примере (см. алгоритм 4.3): http://www.eecs.harvard.edu/~ellard/Q-97/HTML/root/node20.html
Там выполнение row_p->next дало следующий ненулевой элемент строки (то же самое для столбца). Есть ли способ сделать то же самое с классом octave SparseMatrix? Или есть другой способ реализации умножения разреженных матриц, который я могу использовать для своей функции maxmin?