类 SparseFieldVector<T extends FieldElement<T>>
java.lang.Object
org.hipparchus.linear.SparseFieldVector<T>
- 类型参数:
-
T
- 字段元素的类型
- 所有已实现的接口:
-
Serializable
,FieldVector<T>
public class SparseFieldVector<T extends FieldElement<T>> extends Object implements FieldVector<T>, Serializable
该类使用
OpenIntToFieldHashMap
作为后端存储实现了FieldVector
接口。
注意:此实现假定对于任何x
,等式x * 0d == 0d
成立。但对于NaN
来说并非如此。此外,零条目将失去其符号。因此,某些操作(涉及NaN
和/或无穷大)可能会导致不正确的结果。
- 另请参阅:
-
构造器概要
限定符构造器说明SparseFieldVector
(Field<T> field) 构建一个长度为0的向量。SparseFieldVector
(Field<T> field, int dimension) 构造一个零向量。SparseFieldVector
(Field<T> field, int dimension, int expectedSize) 构建一个已知稀疏度的向量(仅供高级使用)。SparseFieldVector
(Field<T> field, T[] values) 从字段数组创建。复制构造函数。protected
SparseFieldVector
(SparseFieldVector<T> v, int resize) 构建一个调整大小的向量,用于追加。 -
方法概要
修饰符和类型方法说明add
(FieldVector<T> v) 计算this
和v
的和。add
(SparseFieldVector<T> v) 优化的方法来添加稀疏向量。append
(FieldVector<T> v) 通过将一个向量附加到此向量来构造一个向量。append
(SparseFieldVector<T> v) 通过将一个向量附加到此向量来构造一个向量。通过将一个T附加到此向量来构造一个向量。protected void
checkVectorDimensions
(int n) 检查实例维度是否等于某个预期值。copy()
返回此向量的(深层)副本。dotProduct
(FieldVector<T> v) 计算点积。ebeDivide
(FieldVector<T> v) 逐元素除法。ebeMultiply
(FieldVector<T> v) 逐元素乘法。boolean
int
返回向量的大小。getEntry
(int index) 返回指定索引处的条目。getField()
获取向量的字段元素类型。getSubVector
(int index, int n) 从连续元素中获取子向量。int
hashCode()
将加法操作映射到每个条目。mapAddToSelf
(T d) 将加法操作映射到每个条目。将除法操作映射到每个条目。mapDivideToSelf
(T d) 将除法操作映射到每个条目。mapInv()
将1/x函数映射到每个条目。将1/x函数映射到每个条目。mapMultiply
(T d) 将乘法操作映射到每个条目。将乘法操作映射到每个条目。mapSubtract
(T d) 将减法操作映射到每个条目。将减法操作映射到每个条目。outerProduct
(FieldVector<T> v) 计算外积。当两个向量都是稀疏向量时,计算外积的优化方法。projection
(FieldVector<T> v) 找到此向量在另一个向量上的正交投影。void
将所有元素设置为单个值。void
设置单个元素。void
setSubVector
(int index, FieldVector<T> v) 设置一组连续元素。subtract
(FieldVector<T> v) 计算this
减去v
。计算this
减去v
的优化方法。T[]
toArray()
将向量转换为T数组。walkInDefaultOrder
(FieldVectorChangingVisitor<T> visitor) 以默认顺序(增加索引)访问(可能更改)此向量的所有条目。walkInDefaultOrder
(FieldVectorChangingVisitor<T> visitor, int start, int end) 以默认顺序(增加索引)访问(可能更改)此向量的一些条目。walkInDefaultOrder
(FieldVectorPreservingVisitor<T> visitor) 以默认顺序(增加索引)访问(但不更改)此向量的所有条目。walkInDefaultOrder
(FieldVectorPreservingVisitor<T> visitor, int start, int end) 以默认顺序(增加索引)访问(但不更改)此向量的一些条目。walkInOptimizedOrder
(FieldVectorChangingVisitor<T> visitor) 以优化顺序访问(可能更改)此向量的所有条目。walkInOptimizedOrder
(FieldVectorChangingVisitor<T> visitor, int start, int end) 以优化顺序访问(可能更改)此向量的一些条目。以优化顺序访问(但不更改)此向量的所有条目。walkInOptimizedOrder
(FieldVectorPreservingVisitor<T> visitor, int start, int end) 以优化顺序访问(但不更改)此向量的一些条目。
-
构造器详细资料
-
SparseFieldVector
构建一个长度为0的向量。零长度向量可用于通过数据收集初始化向量的构造。我们从零长度开始,使用SparseFieldVector(SparseFieldVector, int)
构造函数或append
方法之一(append(FieldVector)
或append(SparseFieldVector)
)将数据收集到此向量中。- 参数:
-
field
- 元素所属的字段。
-
SparseFieldVector
构造一个零向量。- 参数:
-
field
- 元素所属的字段。 -
dimension
- 向量的大小。
-
SparseFieldVector
构建一个调整大小的向量,用于追加。- 参数:
-
v
- 原始向量 -
resize
- 要添加的数量。
-
SparseFieldVector
构建一个已知稀疏度的向量(仅供高级使用)。- 参数:
-
field
- 元素所属的字段。 -
dimension
- 向量的大小。 -
expectedSize
- 非零条目的预期数量。
-
SparseFieldVector
从字段数组创建。只存储非零条目。- 参数:
-
field
- 元素所属的字段。 -
values
- 要从中创建的值集。 - 抛出:
-
NullArgumentException
- 如果值为null
-
SparseFieldVector
复制构造函数。- 参数:
-
v
- 要复制的实例。
-
-
方法详细资料
-
add
优化的方法来添加稀疏向量。- 参数:
-
v
- 要添加的向量。 - 返回:
-
this + v
。 - 抛出:
-
MathIllegalArgumentException
- 如果v
与this
的大小不同。
-
append
通过将一个向量附加到此向量来构造一个向量。- 参数:
-
v
- 要附加到此向量的向量。 - 返回:
- 一个新向量。
-
append
通过将一个向量附加到此向量来构造一个向量。- 指定者:
-
append
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 要附加到此向量的向量。 - 返回:
- 一个新向量
-
append
通过将一个T附加到此向量来构造一个向量。- 指定者:
-
append
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要附加的T。 - 返回:
- 一个新向量
- 抛出:
-
NullArgumentException
- 如果d为null
-
copy
返回此向量的(深层)副本。- 指定者:
-
copy
在接口中FieldVector<T extends FieldElement<T>>
- 返回:
- 向量副本
-
dotProduct
计算点积。- 指定者:
-
dotProduct
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 用于计算点积的向量 - 返回:
-
this
和v
的标量点积 - 抛出:
-
MathIllegalArgumentException
- 如果v
的大小与this
不同
-
ebeDivide
public FieldVector<T> ebeDivide(FieldVector<T> v) throws MathIllegalArgumentException, MathRuntimeException 逐元素除法。- 指定者:
-
ebeDivide
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 必须除以实例元素的向量 - 返回:
-
包含所有
i
的this[i] / v[i]
的向量 - 抛出:
-
MathIllegalArgumentException
- 如果v
的大小与this
不同 -
MathRuntimeException
- 如果v
的一个条目为零
-
ebeMultiply
逐元素乘法。- 指定者:
-
ebeMultiply
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 必须乘以实例元素的向量 - 返回:
-
包含所有
i
的this[i] * v[i]
的向量 - 抛出:
-
MathIllegalArgumentException
- 如果v
的大小与this
不同
-
getDimension
public int getDimension()返回向量的大小。- 指定者:
-
getDimension
在接口中FieldVector<T extends FieldElement<T>>
- 返回:
- 大小
-
getEntry
返回指定索引处的条目。- 指定者:
-
getEntry
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
index
- 要获取的条目的索引位置 - 返回:
-
index
处的向量条目。 - 抛出:
-
MathIllegalArgumentException
- 如果索引无效 - 另请参阅:
-
getField
获取向量的字段元素类型。- 指定者:
-
getField
在接口中FieldVector<T extends FieldElement<T>>
- 返回:
- 向量的字段元素类型
-
getSubVector
获取连续元素的子向量。- 指定者:
-
getSubVector
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
index
- 第一个元素的索引位置。 -
n
- 要检索的元素数量。 - 返回:
- 包含 n 个元素的向量。
- 抛出:
-
MathIllegalArgumentException
- 如果索引无效 -
MathIllegalArgumentException
- 如果元素数量不是正数
-
mapAdd
将加法操作映射到每个条目。- 指定者:
-
mapAdd
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要添加到每个条目的值 - 返回:
-
this + d
- 抛出:
-
NullArgumentException
- 如果d
为null
-
mapAddToSelf
将加法操作映射到每个条目。此方法会更改实例。
- 指定者:
-
mapAddToSelf
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要添加到每个条目的值 - 返回:
-
为方便起见,返回
this
- 抛出:
-
NullArgumentException
- 如果d
为null
-
mapDivide
将除法操作映射到每个条目。- 指定者:
-
mapDivide
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要将所有条目除以的值 - 返回:
-
this / d
- 抛出:
-
NullArgumentException
- 如果d
为null
-
MathRuntimeException
- 如果d
为零
-
mapDivideToSelf
将除法操作映射到每个条目。此方法会更改实例。
- 指定者:
-
mapDivideToSelf
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- value to divide all entries by - 返回:
-
for convenience, return
this
- 抛出:
-
NullArgumentException
- ifd
isnull
. -
MathRuntimeException
- ifd
is zero.
-
mapInv
Map the 1/x function to each entry.- 指定者:
-
mapInv
在接口中FieldVector<T extends FieldElement<T>>
- 返回:
- 包含将函数应用于每个条目的结果的向量。
- 抛出:
-
MathRuntimeException
- 如果其中一个条目为零。
-
mapInvToSelf
将1/x函数映射到每个条目。此方法会更改实例。
- 指定者:
-
mapInvToSelf
在接口中FieldVector<T extends FieldElement<T>>
- 返回:
-
为方便起见,返回
this
- 抛出:
-
MathRuntimeException
- 如果其中一个条目为零。
-
mapMultiply
将乘法操作映射到每个条目。- 指定者:
-
mapMultiply
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要将所有条目乘以的值 - 返回:
-
this * d
- 抛出:
-
NullArgumentException
- 如果d
为null
。
-
mapMultiplyToSelf
将乘法操作映射到每个条目。此方法会更改实例。
- 指定者:
-
mapMultiplyToSelf
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要将所有条目乘以的值 - 返回:
-
为方便起见,返回
this
- 抛出:
-
NullArgumentException
- 如果d
为null
。
-
mapSubtract
将减法操作映射到每个条目。- 指定者:
-
mapSubtract
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要从每个条目中减去的值 - 返回:
-
this - d
- 抛出:
-
NullArgumentException
- 如果d
为null
-
mapSubtractToSelf
将减法操作映射到每个条目。此方法会更改实例。
- 指定者:
-
mapSubtractToSelf
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
d
- 要从每个条目中减去的值 - 返回:
-
为方便起见,返回
this
- 抛出:
-
NullArgumentException
- 如果d
为null
-
outerProduct
当两个向量都是稀疏时,计算外积的优化方法。- 参数:
-
v
- 要计算外积的向量 - 返回:
- 实例和v之间的矩阵外积
-
outerProduct
计算外积。- 指定者:
-
outerProduct
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 要计算外积的向量 - 返回:
- 实例和v之间的矩阵外积
-
projection
public FieldVector<T> projection(FieldVector<T> v) throws MathIllegalArgumentException, MathRuntimeException 找到此向量在另一个向量上的正交投影。- 指定者:
-
projection
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 要投影到this
上的向量 - 返回:
-
this
在v
上的投影 - 抛出:
-
MathIllegalArgumentException
- 如果v
的大小与this
不同 -
MathRuntimeException
- 如果v
是空向量。
-
set
将所有元素设置为单个值。- 指定者:
-
set
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
value
- 要为所有元素设置的单个值 - 抛出:
-
NullArgumentException
- 如果值为null
-
setEntry
设置单个元素。- 指定者:
-
setEntry
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
index
- 元素索引。 -
value
- 元素的新值。 - 抛出:
-
NullArgumentException
- 如果值为null -
MathIllegalArgumentException
- 如果索引无效。 - 另请参阅:
-
setSubVector
设置一组连续的元素。- 指定者:
-
setSubVector
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
index
- 要设置的第一个元素的索引。 -
v
- 包含要设置的值的向量。 - 抛出:
-
MathIllegalArgumentException
- 如果索引无效。
-
subtract
计算this
减去v
的优化方法。- 参数:
-
v
- 要减去的向量 - 返回:
-
this - v
- 抛出:
-
MathIllegalArgumentException
- 如果v
的大小与this
不同。
-
subtract
计算this
减去v
。- 指定者:
-
subtract
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 要减去的向量 - 返回:
-
this - v
- 抛出:
-
MathIllegalArgumentException
- 如果v
的大小与this
不同
-
toArray
将向量转换为T数组。数组与向量数据独立,其元素被复制。
- 指定者:
-
toArray
在接口中FieldVector<T extends FieldElement<T>>
- 返回:
- 包含向量元素副本的数组
-
checkVectorDimensions
检查实例维度是否等于某个预期值。- 参数:
-
n
- 预期维度。 - 抛出:
-
MathIllegalArgumentException
- 如果维度不匹配。
-
add
计算this
和v
的和。- 指定者:
-
add
在接口中FieldVector<T extends FieldElement<T>>
- 参数:
-
v
- 要添加的向量 - 返回:
-
this + v
- 抛出:
-
MathIllegalArgumentException
- 如果v
的大小与this
不同
-
walkInDefaultOrder
访问(但不更改)默认顺序(索引递增)中此向量的所有条目。- 参数:
-
visitor
- 用于处理此向量条目的访问者 - 返回:
-
在遍历结束时由
FieldVectorPreservingVisitor.end()
返回的值
-
walkInDefaultOrder
public T walkInDefaultOrder(FieldVectorPreservingVisitor<T> visitor, int start, int end) throws MathIllegalArgumentException 访问(但不更改)默认顺序(索引递增)中此向量的某些条目。- 参数:
-
visitor
- 用于处理此向量条目的访问者 -
start
- 要访问的第一个条目的索引 -
end
- 要访问的最后一个条目的索引(包括) - 返回:
-
在遍历结束时由
FieldVectorPreservingVisitor.end()
返回的值 - 抛出:
-
MathIllegalArgumentException
- 如果end < start
。 -
MathIllegalArgumentException
- 如果索引无效。
-
walkInOptimizedOrder
访问(但不更改)优化顺序中此向量的所有条目。选择访问条目的顺序以导致最有效的实现;这可能取决于此抽象类的具体实现。- 参数:
-
visitor
- 用于处理此向量条目的访问者 - 返回:
-
在遍历结束时由
FieldVectorPreservingVisitor.end()
返回的值
-
walkInOptimizedOrder
public T walkInOptimizedOrder(FieldVectorPreservingVisitor<T> visitor, int start, int end) throws MathIllegalArgumentException 访问(但不更改)优化顺序中此向量的某些条目。选择访问条目的顺序以导致最有效的实现;这可能取决于此抽象类的具体实现。- 参数:
-
visitor
- 用于处理此向量条目的访问者 -
start
- 要访问的第一个条目的索引 -
end
- 要访问的最后一个条目的索引(包括) - 返回:
-
在遍历结束时由
FieldVectorPreservingVisitor.end()
返回的值 - 抛出:
-
MathIllegalArgumentException
- 如果end < start
。 -
MathIllegalArgumentException
- 如果索引无效。
-
walkInDefaultOrder
访问(并可能更改)默认顺序(索引递增)中此向量的所有条目。- 参数:
-
visitor
- 用于处理和修改此向量条目的访问者 - 返回:
-
在遍历结束时由
FieldVectorChangingVisitor.end()
返回的值
-
walkInDefaultOrder
public T walkInDefaultOrder(FieldVectorChangingVisitor<T> visitor, int start, int end) throws MathIllegalArgumentException 访问(并可能更改)默认顺序(索引递增)中此向量的某些条目。- 参数:
-
visitor
- 用于处理此向量条目的访问者 -
start
- 要访问的第一个条目的索引 -
end
- 要访问的最后一个条目的索引(包括) - 返回:
-
在遍历结束时由
FieldVectorChangingVisitor.end()
返回的值 - 抛出:
-
MathIllegalArgumentException
- 如果end < start
。 -
MathIllegalArgumentException
- 如果索引无效。
-
walkInOptimizedOrder
访问(并可能更改)优化顺序中此向量的所有条目。选择访问条目的顺序以导致最有效的实现;这可能取决于此抽象类的具体实现。- 参数:
-
visitor
- 用于处理此向量条目的访问者 - 返回:
-
在遍历结束时由
FieldVectorChangingVisitor.end()
返回的值
-
walkInOptimizedOrder
public T walkInOptimizedOrder(FieldVectorChangingVisitor<T> visitor, int start, int end) throws MathIllegalArgumentException 访问(并可能更改)优化顺序中此向量的某些条目。选择访问条目的顺序以导致最有效的实现;这可能取决于此抽象类的具体实现。- 参数:
-
visitor
- 用于处理此向量条目的访问者 -
start
- 要访问的第一个条目的索引 -
end
- 要访问的最后一个条目的索引(包括) - 返回:
-
在遍历结束时由
FieldVectorChangingVisitor.end()
返回的值 - 抛出:
-
MathIllegalArgumentException
- 如果end < start
。 -
MathIllegalArgumentException
- 如果索引无效。
-
hashCode
public int hashCode() -
equals
-