本文整理汇总了Golang中github.com/hrautila/matrix.FloatMatrix.Div方法的典型用法代码示例。如果您正苦于以下问题:Golang FloatMatrix.Div方法的具体用法?Golang FloatMatrix.Div怎么用?Golang FloatMatrix.Div使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/hrautila/matrix.FloatMatrix
的用法示例。
在下文中一共展示了FloatMatrix.Div方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SolveDiag
/*
* Compute
* X = B*diag(D).-1 flags & RIGHT == true
* X = diag(D).-1*C flags & LEFT == true
*
* Arguments:
* B M-by-N matrix if flags&RIGHT == true or N-by-M matrix if flags&LEFT == true
*
* D N element column or row vector or N-by-N matrix
*
* flags Indicator bits, LEFT or RIGHT
*/
func SolveDiag(B, D *matrix.FloatMatrix, flags Flags) {
var c, d0 matrix.FloatMatrix
if D.Cols() == 1 {
// diagonal is column vector
switch flags & (LEFT | RIGHT) {
case LEFT:
// scale rows; for each column element-wise multiply with D-vector
for k := 0; k < B.Cols(); k++ {
B.SubMatrix(&c, 0, k, B.Rows(), 1)
c.Div(D)
}
case RIGHT:
// scale columns
for k := 0; k < B.Cols(); k++ {
B.SubMatrix(&c, 0, k, B.Rows(), 1)
// scale the column
c.Scale(1.0 / D.GetAt(k, 0))
}
}
} else {
var d *matrix.FloatMatrix
if D.Rows() == 1 {
d = D
} else {
D.SubMatrix(&d0, 0, 0, 1, D.Cols(), D.LeadingIndex()+1)
d = &d0
}
switch flags & (LEFT | RIGHT) {
case LEFT:
for k := 0; k < B.Rows(); k++ {
B.SubMatrix(&c, k, 0, 1, B.Cols())
// scale the row
c.Scale(1.0 / d.GetAt(0, k))
}
case RIGHT:
// scale columns
for k := 0; k < B.Cols(); k++ {
B.SubMatrix(&c, 0, k, B.Rows(), 1)
// scale the column
c.Scale(1.0 / d.GetAt(0, k))
}
}
}
}