问题描述
我正在使用稀疏矩阵操作使用Apple的Accelerate框架。
我因此创建了一个稀疏矩阵:
var values: Array<Double> = [0.125,0.08,-0.01,0.405,-0.02,0.005]
var rowIndices: [Int32] = [0,1,2,// Column 0
3,4,// Column 1
5 ] // Column 3
var columnStarts = [0,3,5,6]
let structure: SparseMatrixStructure = rowIndices.withUnsafeMutableBufferPointer { rowIndicesPtr in
columnStarts.withUnsafeMutableBufferPointer { columnStartsPtr in
var attributes = SparseAttributes_t()
attributes.triangle = SparseLowerTriangle
attributes.kind = SparseSymmetric
return SparseMatrixStructure(
rowCount: 3,columnCount: 3,columnStarts: columnStartsPtr.baseAddress!,rowIndices: rowIndicesPtr.baseAddress!,attributes: attributes,blockSize: 1
)
}
我正在打电话分解矩阵:
let llt: SparSEOpaqueFactorization_Double = values.withUnsafeMutableBufferPointer { valuesPtr in
let a = SparseMatrix_Double(
structure: structure,data: valuesPtr.baseAddress!
)
return SparseFactor(SparseFactorizationCholesky,a)
}
我真的需要检查分解的结果-即打印出结果。甚至看不到任何获得结果的方法,更不用说将其打印出来了。
有人可以帮助我了解如何检索结果并打印结果吗?
解决方法
最终自己解决了这个问题。我用过:
let subfactors = SparseCreateSubfactor(SparseSubfactorL,llt)
从分解中提取一个子因子对象,然后将子因子乘以单位矩阵得到分解。