public class PiVector extends P_Vector implements java.lang.Cloneable
Modifier and Type | Field and Description |
---|---|
int[] |
m_data
Data array containing the components of the vector.
|
Constructor and Description |
---|
PiVector()
Construct vector with zero size.
|
PiVector(int aSize)
Constructor creating a vector with given dimension.
|
PiVector(int[] x)
Constructs a vector having same length and given initial data as given array.
|
PiVector(int x,
int y)
Constructs a vector of length 2 and given initial data.
|
PiVector(int x,
int y,
int z)
Constructs a vector of length 3 and given initial data.
|
PiVector(int x,
int y,
int z,
int w)
Constructs a vector of length 4 and given initial data.
|
Modifier and Type | Method and Description |
---|---|
void |
add(int val)
Add a value to each component of the vector.
|
void |
add(int factor,
PiVector v)
Add
factor*v to this . |
void |
add(PiVector m)
Sum with argument vector
this = this+m . |
void |
add(PiVector m1,
PiVector m2)
Sum of argument vectors
this = m1+m2 . |
int |
addEntry(int val)
Add another entry at the end of the vector and increment size of vector.
|
static boolean |
adjustSizes(PiVector[] dataDest,
int destInd,
PiVector[] dataSrc,
int srcInd,
int size)
Adjusts the sizes of vectors in destination array to match the sizes of vectors in
source array.
|
static PiVector[][] |
alloc(int sizeI,
int sizeJ,
int vectorSize)
Allocate a new array of vectors, where all vectors have the same dimension.
|
double |
average()
Compute the average value of all entries.
|
void |
blend(double a,
PiVector v,
double b,
PiVector w)
Interpolate between two vectors with given weights.
|
void |
blend(int a,
PiVector v,
int b,
PiVector w)
Interpolate between two vectors with given weights.
|
void |
blendBase(PiVector v,
int b,
PiVector w)
Interpolate between two vectors with given weights.
|
static PiVector |
blendNew(int a,
PiVector v,
int b,
PiVector w)
Create a new vector
this = a*v + b*w . |
int |
changeValue(int oldValue,
int newValue)
Change all occurrence of value oldValue to newValue
COMPARE: changeValue(int, int, int)
return number of changed positions
|
int |
changeValue(int usedSize,
int oldValue,
int newValue)
Change occurrence of value oldValue to newValue on first 'usedSize' positions
difference to method changeValue(int, int): sometime we use vectors where
only the first entries are used.
|
java.lang.Object |
clone()
Clone object and all instance variables.
|
void |
concat(PiVector piv)
Concatenates another PiVector to the end of this vector.
|
static PiVector |
concatNew(PiVector v,
PiVector w)
Concatenate two PiVectors into one new PiVector.
|
boolean |
contains(int aValue)
Returns true if this PiVector contains 'aValue'.
|
void |
copy(int[] anArray,
int aSize)
Copy a integer array into a vector, and do not adjust size of destination vector.
|
boolean |
copy(int destInd,
PiVector dataSrc,
int srcInd,
int size)
Copy part of the source vector into this vector, and adjust size of this vector
only if it is too small.
|
void |
copy(PiVector v)
Copy a vector into a vector, and do not adjust size of dest vector.
|
static boolean |
copy(PiVector[] dataDest,
int destInd,
PiVector[] dataSrc,
int srcInd,
int size)
Copies some vectors of a given array of vectors into an existing destination array.
|
void |
copyArray(PiVector v)
Copy data array of source vector into this vector, and do not adjust size of destination vector.
|
static PiVector[] |
copyNew(int[][] data)
Create an new array with copies of all doubles of a given 2-dimensional array of numbers.
|
static PiVector |
copyNew(PiVector v)
Create a new vector as clone of argument vector.
|
static PiVector[] |
copyNew(PiVector[] data)
Create an new array with copies of all vectors of a given array of vectors.
|
static PiVector[] |
copyNew(PiVector[] data,
int size)
Create an new array with copies of the first 'size' vectors of a given array of vectors.
|
int |
dist(PiVector v)
Euclidean distance
dist = |this-v| . |
int |
dot(PiVector v)
Compute scalar product with argument vector.
|
static int |
dot(PiVector v,
PiVector w)
Scalar product of two vectors.
|
boolean |
equals(int[] list)
Compare vector with list of integers and return
false if different
array lengths or a different entry. |
boolean |
equals(java.lang.Object obj)
Determines whether another vector or array of ints is equal to this vector.
|
boolean |
equals(PiVector v)
Determines whether another vector is equal to this vector.
|
int[] |
getEntries()
Return a copy of content of vector as array of integers.
|
static int[][] |
getEntries(PiVector[] vArr)
Return content of array of vectors as matrix of integers.
|
int |
getEntry(int ind)
Get the component of a vector.
|
int |
getFirstEntry()
Get the first component of a vector.
|
int |
getIndexOf(int aValue)
Find index of first occurrence of value 'aValue' in vector.
|
int |
getLastEntry()
Get the last component of a vector.
|
double |
getLength()
Get Euclidean length of vector.
|
static int |
getSameSize(PiVector[] vecArr,
int numUsed)
Check of all vectors in array of vector have same length.
|
int |
getSize()
Return size of vector, i.e. number of entries in data array.
|
boolean |
hasUniqueEntries()
Check, whether all entries of this vector are different.
|
int |
indexOfAbsMax()
Find component in vector with maximal absolute value.
|
int |
indexOfAbsMin()
Find component in vector with minimal absolute value.
|
int |
indexOfMax()
Find component in vector with maximal value.
|
int |
indexOfMin()
Find component in vector with minimal value.
|
int |
indexOfValueInOrdering(int value)
Computes the index i of the first entry of vector with
v[i]>=value
in logarithmic time. |
PiVector |
invert()
Invert order of all entries, i.e. the first entry becomes the last entry.
|
PiVector |
invert(int usedSize)
Invert order of the first 'usedSize' entries, i.e. the first entry
becomes the 'usedSize-1' entry.
|
void |
leftMultMatrix(PdMatrix m)
Multiply vector with matrix
this = m*this . |
void |
leftMultMatrix(PdMatrix m,
PiVector v)
Multiply vector with matrix
this = m*v . |
int |
length()
Get Euclidean length of vector as rounded integer.
|
int |
max()
Find maximum value in vector.
|
static boolean |
max(PiVector max,
PiVector[] vecArr,
int arrayLength)
Find the maximum of an array of vectors in each component.
|
double |
maxAbs()
Find maximal absolute value of component in vector.
|
int |
min()
Find minimal value of component in vector.
|
static boolean |
min(PiVector min,
PiVector[] vecArr,
int arrayLength)
Find the minimum of an array of vectors in each component.
|
void |
multScalar(int scalar)
Multiply vector with scalar
this = scalar*this . |
void |
multScalar(PiVector v,
int scalar)
Multiply argument vector with scalar
this = scalar*v . |
boolean |
normalize()
Deprecated.
use PdVector
|
void |
normalize(PiVector v)
Deprecated.
use PdVector
|
static PiVector[] |
realloc(PiVector[] data,
int arraySize)
Allocate an array of vectors.
|
static PiVector[] |
realloc(PiVector[] data,
int arraySize,
int vectorSize)
Allocate an array of vectors, where all vectors have the same dimension.
|
void |
removeEntry(int ind)
Remove an entry from the vector.
|
void |
removeSuccessiveDuplicates()
Removes all successive duplicate entries.
|
void |
rightMultMatrix(PdMatrix m)
Multiply vector with matrix
this = this*m . |
void |
rightMultMatrix(PiVector v,
PdMatrix m)
Multiply vector with matrix
this = v*m . |
void |
set(int x)
Assign value to vector, and set size of vector to 1.
|
void |
set(int[] x)
Assign values of vector, and adjust length of vector if different from length of array.
|
void |
set(int[] x,
int len)
Assign first values of array to vector, and adjust length of vector if different from argument len.
|
void |
set(int[] x,
int from,
int len)
Assign 'len' values of array starting at 'from' to vector, and adjust length of vector if different from argument len.
|
void |
set(int x,
int y)
Assign value to vector, and set size of vector to 2.
|
void |
set(int x,
int y,
int z)
Assign value to vector, and set size of vector to 3.
|
void |
set(int x,
int y,
int z,
int w)
Assign value to vector, and set size of vector to 4.
|
void |
set(PiVector x,
int from,
int len)
Assign 'len' values of array starting at 'from' to vector, and adjust length of vector if different from argument len.
|
void |
setConstant(int aValue)
Set all entries to a constant value.
|
static void |
setConstant(PiVector[] vecArr,
int aValue)
Set all components of all vectors of an array to a constant.
|
static void |
setConstant(PiVector[] vecArr,
int[] data)
Set all vectors of an array equal to a given vector.
|
static void |
setConstant(PiVector[] vecArr,
PiVector aVector)
Set all vectors of an array equal to a given vector.
|
static void |
setConstant(PiVector v,
int aValue)
Set all entries to a constant value.
|
void |
setEntry(int ind,
int value)
Assign value to component of vector, and possibly enlarge vector if too small.
|
void |
setFirstEntry(int value)
Set the first component of a vector.
|
void |
setLastEntry(int value)
Set the last component of a vector.
|
void |
setLength(int aLength)
Deprecated.
use PdVector
|
int |
setSize(int aSize)
Set dimension of vector, i.e. length of its data array.
|
void |
shift(int num)
Shift components in cyclic order within the array.
|
void |
sort()
Sort entries of this PiVector by size.
|
void |
sort(PiVector vecOut)
Fill OutVector with sorted entries of this PiVector.
|
int |
sqrDist(PiVector v)
Square of Euclidean distance
sqrDist = |this-v|^2 . |
int |
sqrLength()
Get square of euclidean length of vector.
|
void |
sub(PiVector m)
Difference with argument vector
this = this-m . |
void |
sub(PiVector m1,
PiVector m2)
Difference of argument vectors
this = m1 - m2 . |
static PiVector |
subNew(PiVector m1,
PiVector m2)
Create a new vector as difference of argument vectors
new = m1-m2 . |
int |
sum()
Compute the sum of all entries.
|
java.lang.String |
toShortString()
Create a single-line string representation of the vector components and attributes.
|
java.lang.String |
toString()
Create a multi-line string representation
with detailed information about all instance variables.
|
public int[] m_data
public PiVector()
public PiVector(int aSize)
public PiVector(int x, int y)
public PiVector(int x, int y, int z)
public PiVector(int x, int y, int z, int w)
public PiVector(int[] x)
public java.lang.Object clone()
copyNew(PiVector)
but this clone() method is consistent with possible subclasses
while copyNew() explicitly creates a new PiVector.clone
in class java.lang.Object
copyNew(PiVector)
public static int[][] getEntries(PiVector[] vArr)
vArr
- Array of vectorspublic static PiVector[][] alloc(int sizeI, int sizeJ, int vectorSize)
sizeI
- number of rows in new arraysizeJ
- number of columns in row[i] in new arrayvectorSize
- dimension of vectors in new arrayrealloc(PiVector [], int, int)
public static final PiVector[] realloc(PiVector[] data, int arraySize, int vectorSize)
data!=null
then as most as possible of the content of
existing vectors is copied into (possibly reused) vectors of the
reallocated array.
If requested array size is 0 then method returns an array of length 0.
data
- possibly empty array of vectorsarraySize
- number of vectors in new arrayvectorSize
- dimension of vectors in new arrayrealloc(PiVector [], int)
public static final PiVector[] realloc(PiVector[] data, int arraySize)
data!=null
then as most as possible of the
existing vectors are reused in the reallocated array. New vectors are
allocated with dimension zero.
If requested array size is 0 then method returns an array of length 0.
data
- possibly empty array of vectorsarraySize
- number of vectors in new arrayrealloc(PiVector [], int, int)
public static PiVector[] copyNew(int[][] data)
data
- 2-dimensional array of numberscopyNew(PiVector [], int)
,
copy(PiVector [], int, PiVector [], int, int)
public static PiVector[] copyNew(PiVector[] data)
data
- array of vectorscopyNew(PiVector [], int)
,
copy(PiVector [], int, PiVector [], int, int)
public static PiVector[] copyNew(PiVector[] data, int size)
data
- array of vectorssize
- number of copied vectors of arraycopyNew(PiVector [])
,
copy(PiVector [], int, PiVector [], int, int)
public static boolean copy(PiVector[] dataDest, int destInd, PiVector[] dataSrc, int srcInd, int size)
for (int i=0; iDestination array must be large enough, i.e. dataDest.length >= destInd+size
.
dataDest
- destination array of vectorsdestInd
- index of first destination vector in dataDestdataSrc
- source array of vectorssrcInd
- index of first source vector in dataSrc used for copyingsize
- number of copied vectors of arraytrue
if destination array is large enoughcopy(PiVector)
,
adjustSizes(PiVector[], int, PiVector[], int, int)
public static boolean adjustSizes(PiVector[] dataDest, int destInd, PiVector[] dataSrc, int srcInd, int size)
for (int i=0; i
dataDest
- destination array of vectorsdestInd
- index of first destination vector in dataDestdataSrc
- source array of vectorssrcInd
- index of first source vector in dataSrc used for copyingsize
- number of copied vector sizes of arraytrue
at successcopy(PiVector[], int, PiVector[], int, int)
public static int getSameSize(PiVector[] vecArr, int numUsed)
public static final boolean min(PiVector min, PiVector[] vecArr, int arrayLength)
min
- computed minimumvecArr
- array of vectorsarrayLength
- number of used vectors of arraymax(PiVector, PiVector [], int)
public static final boolean max(PiVector max, PiVector[] vecArr, int arrayLength)
max
- computed maximumvecArr
- array of vectorsarrayLength
- number of used vectors of arraymin(PiVector, PiVector [], int)
public static void setConstant(PiVector[] vecArr, int aValue)
public static void setConstant(PiVector[] vecArr, int[] data)
public static void setConstant(PiVector[] vecArr, PiVector aVector)
public static void setConstant(PiVector v, int aValue)
public void setConstant(int aValue)
public int getSize()
public int setSize(int aSize)
aSize
- new number of components of vectorpublic int[] getEntries()
public int getEntry(int ind)
public void setEntry(int ind, int value)
ind
- index of component to modifyvalue
- new value of componentpublic int getFirstEntry()
public void setFirstEntry(int value)
value
- new value of first componentpublic int getLastEntry()
public void setLastEntry(int value)
value
- new value of last componentpublic int addEntry(int val)
val
- value to be addedpublic void removeEntry(int ind)
ind
- Index of the entry to remove.public void concat(PiVector piv)
piv
- Vector to append to this one.public static PiVector concatNew(PiVector v, PiVector w)
v
- First vectorw
- Second vectorpublic void set(PiVector x, int from, int len)
public void set(int[] x, int from, int len)
public void set(int[] x, int len)
public void set(int[] x)
public void set(int x)
public void set(int x, int y)
public void set(int x, int y, int z)
public void set(int x, int y, int z, int w)
public int getIndexOf(int aValue)
public boolean contains(int aValue)
public int changeValue(int usedSize, int oldValue, int newValue)
public int changeValue(int oldValue, int newValue)
public void shift(int num)
num
- number of positions each component is shiftedinvert()
public PiVector invert(int usedSize)
usedSize
- number of used entriesinvert()
public PiVector invert()
invert(int)
public void add(int val)
val
- number to be added to each componentpublic void add(PiVector m)
this = this+m
.public void add(int factor, PiVector v)
factor*v
to this
.
If result vector 'this' is empty then its size is set to length of vector 'v'.
Otherwise, 'this' and v must be of same size.v
- vector to add to 'this'factor
- weight of vector vadd(PiVector)
,
add(PiVector, PiVector)
,
blendBase(PiVector, int, PiVector)
,
blend(int, PiVector, int, PiVector)
public void sub(PiVector m)
this = this-m
.public static PiVector subNew(PiVector m1, PiVector m2)
new = m1-m2
.
If sizes differ then a warning is thrown and a vector of minimal common size returned.public static PiVector copyNew(PiVector v)
v
- source vector to clonepublic boolean copy(int destInd, PiVector dataSrc, int srcInd, int size)
copy(PiVector)
public void copy(PiVector v)
v
- source vector to copycopy(int,PiVector,int,int)
public void copyArray(PiVector v)
copy(PiVector)
this method does not
invoke the copy method of the superclass.
If destination vector is empty then allocated space of size of source vector.
If source and destination vectors have different size then use the minimum
of both sizes for copying. If destination vector is bigger than source then reset
the additional entries in destination vector with 0.v
- source vector to copycopy(PiVector)
public void copy(int[] anArray, int aSize)
copy(int, PiVector, int, int)
public void multScalar(int scalar)
this = scalar*this
.public void multScalar(PiVector v, int scalar)
this = scalar*v
.public void leftMultMatrix(PdMatrix m)
this = m*this
.
Matrix must be square and of same size than vector.
Method does not change size of 'this'!public void leftMultMatrix(PdMatrix m, PiVector v)
this = m*v
.
Matrix need not be square.
Method modifies size of vector to number of row of matrix.public void rightMultMatrix(PdMatrix m)
this = this*m
.
Matrix must be square and of same size than vector.
Method does not change size of 'this'!public void rightMultMatrix(PiVector v, PdMatrix m)
this = v*m
.
Matrix need not be square.
Method modifies size of vector to number of columns of matrix.public int dot(PiVector v)
public int sqrLength()
public int length()
public double getLength()
public boolean normalize()
public void normalize(PiVector v)
public void setLength(int aLength)
public static PiVector blendNew(int a, PiVector v, int b, PiVector w)
this = a*v + b*w
.public void blend(int a, PiVector v, int b, PiVector w)
this = v*a + w*b
.
If result vector 'this' is empty then its size is set to length of vector v,
otherwise interpolation is done up to length of result vector.v
- first vectora
- weight of vector vw
- second vectorb
- weight of vector wblendBase(PiVector, int, PiVector)
,
blendNew(int, PiVector, int, PiVector)
public void blendBase(PiVector v, int b, PiVector w)
this = v + w*b
.
If result vector 'this' is empty then its size is set to length of vector v,
otherwise interpolation is done up to length of result vector.v
- first vectorw
- second vectorb
- weight of vector wblend(int, PiVector, int, PiVector)
,
blendNew(int, PiVector, int, PiVector)
public void blend(double a, PiVector v, double b, PiVector w)
this = v*a + w*b
.
If result vector 'this' is empty then its size is set to length of vector v,
otherwise interpolation is done up to length of result vector.v
- first vectora
- weight of vector vw
- second vectorb
- weight of vector wblendBase(PiVector, int, PiVector)
,
blendNew(int, PiVector, int, PiVector)
public int dist(PiVector v)
dist = |this-v|
.public int sqrDist(PiVector v)
sqrDist = |this-v|^2
.public int max()
min()
,
indexOfMax()
,
indexOfAbsMax()
public double maxAbs()
min()
,
indexOfMax()
,
indexOfAbsMax()
public int min()
max()
,
indexOfMin()
,
indexOfAbsMin()
public int indexOfAbsMax()
max()
,
indexOfMax()
public int indexOfAbsMin()
min()
,
indexOfMin()
public int indexOfMax()
indexOfAbsMax()
public int indexOfMin()
indexOfAbsMin()
public int indexOfValueInOrdering(int value)
v[i]>=value
in logarithmic time. Vector must be sort by increasing values.value
- Find position of this value in order vector.v[i]>=value
or -1 if value is smaller than minimum value of vector.public int sum()
public double average()
public boolean hasUniqueEntries()
public void sort(PiVector vecOut)
public void sort()
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
equals(int[])
,
equals(PiVector)
,
Object.equals(java.lang.Object)
public boolean equals(int[] list)
false if different
array lengths or a different entry.
Determines whether a list of integers is equal to data of this vector.
The result is true
if both arrays have same length and
equal components. Result is also true
if argument vector
is null and this vector has no entries.
list
- the list of integers to compare withtrue
if the objects are the same; false
otherwise.public boolean equals(PiVector v)
true
if both vectors have same length and
equal components. Result is also true
if argument vector
is null and this vector has no entries.v
- the vector to compare withtrue
if the objects are the same; false
otherwise.public java.lang.String toString()
toString
in class P_Vector
toShortString()
public java.lang.String toShortString()
toString()
public void removeSuccessiveDuplicates()
"