【发布时间】:2011-05-27 21:59:33
【问题描述】:
我正在实现一个 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 八进制文件,所以我必须使用 oct.h 数据结构。问题是我想实现一个稀疏版本,但通常你需要在一行或一列中引用下一个非零元素,如本例所示(参见 4.3 算法): http://www.eecs.harvard.edu/~ellard/Q-97/HTML/root/node20.html
row_p->next 给出了行的下一个非零元素(列相同)。有没有办法对 octave SparseMatrix 类做同样的事情?或者是否有另一种实现稀疏矩阵乘法的方法可以用于我的 maxmin 函数?
【问题讨论】:
标签: c++ octave sparse-matrix matrix-multiplication min