类 BlockFieldMatrix<T extends FieldElement<T>>

java.lang.Object
org.hipparchus.linear.AbstractFieldMatrix<T>
org.hipparchus.linear.BlockFieldMatrix<T>
类型参数:
T - 字段元素的类型
所有已实现的接口:
Serializable, AnyMatrix, FieldMatrix<T>, FieldBlendable<FieldMatrix<T>,T>

public class BlockFieldMatrix<T extends FieldElement<T>> extends AbstractFieldMatrix<T> implements Serializable
使用平面数组实现的FieldMatrix,以存储矩阵的方块块。

此实现专为缓存友好而设计。方块块存储为小数组,并允许以行主导方向和列主导方向高效遍历数据,一次一个块。这极大地提高了使用交叉方向循环的算法(如乘法或转置)的性能。

方块块的大小是一个静态参数。它可以根据目标计算机处理器的缓存大小进行调整。作为经验法则,它应该是允许同时缓存三个块的最大值(例如,对于矩阵乘法是必需的)。默认值是使用36x36块。

常规块表示BLOCK_SIZE x BLOCK_SIZE方块。右侧和底部可能较小以适应矩阵维度。方块块以行主导顺序展开在单维数组中,因此对于常规块,它们是BLOCK_SIZE2元素长。块本身以行主导顺序组织。

例如,对于36x36的块大小,100x60矩阵将存储在6个块中。块0将是一个Field[1296]数组,保存左上角的36x36方块,块1将是一个Field[1296]数组,保存上中心的36x36方块,块2将是一个Field[1008]数组,保存上右侧的36x28矩形,块3将是一个Field[864]数组,保存下左侧的24x36矩形,块4将是一个Field[864]数组,保存下中心的24x36矩形,块5将是一个Field[672]数组,保存下右侧的24x28矩形。

与简单将矩阵映射到java数组相比,布局复杂性开销对于小矩阵来说是可以忽略的(约为1%)。缓存效率带来的收益可使中等到大型矩阵的性能提高多达3倍。

另请参阅: