// SetCol sets the elements of the matrix in the specified column to the values // of src. // // See the VectorSetter interface for more information. func (m *Dense) SetCol(j int, src []float64) int { if j >= m.mat.Cols || j < 0 { panic(ErrColAccess) } blas64.Copy(min(len(src), m.mat.Rows), blas64.Vector{Inc: 1, Data: src}, blas64.Vector{Inc: m.mat.Stride, Data: m.mat.Data[j:]}, ) return min(len(src), m.mat.Rows) }
// Col copies the elements in the jth column of the matrix into the slice dst. // If the provided slice is nil, a new slice is first allocated. // // See the Vectorer interface for more information. func (m *Dense) Col(dst []float64, j int) []float64 { if j >= m.mat.Cols || j < 0 { panic(ErrColAccess) } if dst == nil { dst = make([]float64, m.mat.Rows) } dst = dst[:min(len(dst), m.mat.Rows)] blas64.Copy(len(dst), blas64.Vector{Inc: m.mat.Stride, Data: m.mat.Data[j:]}, blas64.Vector{Inc: 1, Data: dst}, ) return dst }
// CopyVec makes a copy of elements of a into the receiver. It is similar to the // built-in copy; it copies as much as the overlap between the two matrices and // returns the number of rows and columns it copied. func (v *Vector) CopyVec(a *Vector) (n int) { n = min(v.Len(), a.Len()) blas64.Copy(n, a.mat, v.mat) return n }