本文整理汇总了Java中ucar.ma2.Index.getCurrentCounter方法的典型用法代码示例。如果您正苦于以下问题:Java Index.getCurrentCounter方法的具体用法?Java Index.getCurrentCounter怎么用?Java Index.getCurrentCounter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ucar.ma2.Index
的用法示例。
在下文中一共展示了Index.getCurrentCounter方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: interpn
import ucar.ma2.Index; //导入方法依赖的package包/类
/**
* Multidimensional interpolation on regular grids.
*
* @param points The points defining the regular grid in n dimensions.
* @param values The data on the regular grid in n dimensions.
* @param xi The coordinates to sample the gridded data at
* @return Interpolation value
*/
public static double interpn(List<List<Number>> points, Array values, List<Number> xi) {
Object[] r = findIndices(points, xi);
boolean outBounds = (boolean) r[2];
if (outBounds) {
return Double.NaN;
} else {
double v, weight;
Index index = values.getIndex();
int[] indices = (int[]) r[0];
double[] distances = (double[]) r[1];
v = 0;
List<Index> ii = new ArrayList<>();
iterIndex(ii, index, indices, 0);
int n = indices.length;
for (Index idx : ii) {
weight = 1;
for (int i = 0; i < n; i++) {
weight *= idx.getCurrentCounter()[i] == indices[i] ? 1 - distances[i] : distances[i];
}
v += values.getDouble(idx) * weight;
}
return v;
}
}
示例2: hdivg
import ucar.ma2.Index; //导入方法依赖的package包/类
/**
* Calculates the horizontal divergence using finite differencing
*
* @param uData U component
* @param vData V component
* @param xx X dimension value
* @param yy Y dimension value
* @return Divergence
*/
public static Array hdivg(Array uData, Array vData, List<Number> xx, List<Number> yy) {
int rank = uData.getRank();
int[] shape = uData.getShape();
Array lonData = Array.factory(DataType.DOUBLE, shape);
Array latData = Array.factory(DataType.DOUBLE, shape);
Index index = lonData.getIndex();
int[] current;
for (int i = 0; i < lonData.getSize(); i++) {
current = index.getCurrentCounter();
lonData.setDouble(index, xx.get(current[rank - 1]).doubleValue());
latData.setDouble(index, yy.get(current[rank - 2]).doubleValue());
index.incr();
}
Array du = cdiff(uData, rank - 1);
Array dx = mul(cdiff(lonData, rank - 1), Math.PI / 180);
Array dv = cdiff(mul(vData, cos(mul(latData, Math.PI / 180))), rank - 2);
Array dy = mul(cdiff(latData, rank - 2), Math.PI / 180);
Array gData = div(add(div(du, dx), div(dv, dy)), mul(cos(mul(latData, Math.PI / 180)), 6.37e6));
return gData;
}
示例3: argMax
import ucar.ma2.Index; //导入方法依赖的package包/类
/**
* Get the indices of the maximum values along an axis.
*
* @param a Array a
* @param axis Axis
* @return Indices
* @throws ucar.ma2.InvalidRangeException
*/
public static Array argMax(Array a, int axis) throws InvalidRangeException {
int[] dataShape = a.getShape();
int[] shape = new int[dataShape.length - 1];
int idx;
for (int i = 0; i < dataShape.length; i++) {
idx = i;
if (idx == axis) {
continue;
} else if (idx > axis) {
idx -= 1;
}
shape[idx] = dataShape[i];
}
Array r = Array.factory(DataType.INT, shape);
Index indexr = r.getIndex();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = indexr.getCurrentCounter();
List<Range> ranges = new ArrayList<>();
for (int j = 0; j < dataShape.length; j++) {
if (j == axis) {
ranges.add(new Range(0, dataShape[j] - 1, 1));
} else {
idx = j;
if (idx > axis) {
idx -= 1;
}
ranges.add(new Range(current[idx], current[idx], 1));
}
}
idx = argMax(a.section(ranges));
r.setInt(i, idx);
indexr.incr();
}
return r;
}
示例4: concatenate
import ucar.ma2.Index; //导入方法依赖的package包/类
/**
* Concatenate two arrays to one array along a axis
*
* @param a Array a
* @param b Array b
* @param axis The axis
* @return Concatenated array
* @throws ucar.ma2.InvalidRangeException
*/
public static Array concatenate(Array a, Array b, Integer axis) throws InvalidRangeException {
int n = a.getRank();
int[] shape = a.getShape();
if (axis == -1) {
axis = n - 1;
}
int nn = shape[axis];
int[] bshape = b.getShape();
int[] nshape = new int[n];
for (int i = 0; i < n; i++) {
if (i == axis) {
nshape[i] = shape[i] + bshape[i];
} else {
nshape[i] = shape[i];
}
}
Array r = Array.factory(a.getDataType(), nshape);
Index indexr = r.getIndex();
Index indexa = a.getIndex();
Index indexb = b.getIndex();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = indexr.getCurrentCounter();
if (current[axis] < nn) {
indexa.set(current);
r.setObject(indexr, a.getObject(indexa));
} else {
current[axis] = current[axis - nn];
indexb.set(current);
r.setObject(indexr, b.getObject(indexb));
}
indexr.incr();
}
return r;
}
示例5: addInt_bak
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array addInt_bak(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
if (broadcast != -1) {
int[] shape;
if (broadcast == 0) {
shape = a.getShape();
} else {
shape = broadcast(a, b);
}
Array r = Array.factory(DataType.INT, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(broadcast, aindex, bindex, current, n, na, nb);
if (a.getInt(aindex) == Integer.MIN_VALUE || b.getInt(bindex) == Integer.MIN_VALUE) {
r.setInt(i, Integer.MIN_VALUE);
} else {
r.setInt(i, a.getInt(aindex) + b.getInt(bindex));
}
index.incr();
}
return r;
} else {
return null;
}
}
示例6: addInt
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array addInt(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.INT, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
if (a.getInt(i) == Integer.MIN_VALUE || b.getInt(i) == Integer.MIN_VALUE) {
r.setInt(i, Integer.MIN_VALUE);
} else {
r.setInt(i, a.getInt(i) + b.getInt(i));
}
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.INT, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
if (a.getInt(aindex) == Integer.MIN_VALUE || b.getInt(bindex) == Integer.MIN_VALUE) {
r.setInt(i, Integer.MIN_VALUE);
} else {
r.setInt(i, a.getInt(aindex) + b.getInt(bindex));
}
index.incr();
}
return r;
default:
return null;
}
}
示例7: trapz
import ucar.ma2.Index; //导入方法依赖的package包/类
/**
* Integrate vector array using the composite trapezoidal rule.
*
* @param a Array a
* @param dx
* @param axis Axis
* @return Mean value array
* @throws ucar.ma2.InvalidRangeException
*/
public static Array trapz(Array a, double dx, int axis) throws InvalidRangeException {
int[] dataShape = a.getShape();
int[] shape = new int[dataShape.length - 1];
int idx;
for (int i = 0; i < dataShape.length; i++) {
idx = i;
if (idx == axis) {
continue;
} else if (idx > axis) {
idx -= 1;
}
shape[idx] = dataShape[i];
}
Array r = Array.factory(DataType.DOUBLE, shape);
double mean;
Index indexr = r.getIndex();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = indexr.getCurrentCounter();
List<Range> ranges = new ArrayList<>();
for (int j = 0; j < dataShape.length; j++) {
if (j == axis) {
ranges.add(new Range(0, dataShape[j] - 1, 1));
} else {
idx = j;
if (idx > axis) {
idx -= 1;
}
ranges.add(new Range(current[idx], current[idx], 1));
}
}
mean = trapz(a, dx, ranges);
r.setDouble(i, mean);
indexr.incr();
}
return r;
}
示例8: addDouble
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array addDouble(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.DOUBLE, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
if (Double.isNaN(a.getDouble(i)) || Double.isNaN(b.getDouble(i))) {
r.setDouble(i, Double.NaN);
} else {
r.setDouble(i, a.getDouble(i) + b.getDouble(i));
}
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.DOUBLE, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
if (Double.isNaN(a.getDouble(aindex)) || Double.isNaN(b.getDouble(bindex))) {
r.setDouble(i, Double.NaN);
} else {
r.setDouble(i, a.getDouble(aindex) + b.getDouble(bindex));
}
index.incr();
}
return r;
default:
return null;
}
}
示例9: subInt
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array subInt(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.INT, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
r.setInt(i, a.getInt(i) - b.getInt(i));
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.INT, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
r.setInt(i, a.getInt(aindex) - b.getInt(bindex));
index.incr();
}
return r;
default:
return null;
}
}
示例10: subFloat
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array subFloat(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.FLOAT, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
if (Float.isNaN(a.getFloat(i)) || Float.isNaN(b.getFloat(i))) {
r.setFloat(i, Float.NaN);
} else {
r.setFloat(i, a.getFloat(i) - b.getFloat(i));
}
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.FLOAT, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
if (Float.isNaN(a.getFloat(aindex)) || Float.isNaN(b.getFloat(bindex))) {
r.setFloat(i, Float.NaN);
} else {
r.setFloat(i, a.getFloat(aindex) - b.getFloat(bindex));
}
index.incr();
}
return r;
default:
return null;
}
}
示例11: subDouble
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array subDouble(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.DOUBLE, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
if (Double.isNaN(a.getDouble(i)) || Double.isNaN(b.getDouble(i))) {
r.setDouble(i, Double.NaN);
} else {
r.setDouble(i, a.getDouble(i) - b.getDouble(i));
}
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.DOUBLE, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
if (Double.isNaN(a.getDouble(aindex)) || Double.isNaN(b.getDouble(bindex))) {
r.setDouble(i, Double.NaN);
} else {
r.setDouble(i, a.getDouble(aindex) - b.getDouble(bindex));
}
index.incr();
}
return r;
default:
return null;
}
}
示例12: mulInt
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array mulInt(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.INT, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
if (a.getInt(i) == Integer.MIN_VALUE || b.getInt(i) == Integer.MIN_VALUE) {
r.setInt(i, Integer.MIN_VALUE);
} else {
r.setInt(i, a.getInt(i) * b.getInt(i));
}
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.INT, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
if (a.getInt(aindex) == Integer.MIN_VALUE || b.getInt(bindex) == Integer.MIN_VALUE) {
r.setInt(i, Integer.MIN_VALUE);
} else {
r.setInt(i, a.getInt(aindex) * b.getInt(bindex));
}
index.incr();
}
return r;
default:
return null;
}
}
示例13: cdiff
import ucar.ma2.Index; //导入方法依赖的package包/类
/**
* Performs a centered difference operation on a grid data along one
* dimension direction
*
* @param data The grid data
* @param dimIdx Direction dimension index
* @return Result grid data
*/
public static Array cdiff(Array data, int dimIdx) {
Array r = Array.factory(DataType.DOUBLE, data.getShape());
Index index = data.getIndex();
Index indexr = r.getIndex();
int[] shape = data.getShape();
int[] current, cc;
double a, b;
for (int i = 0; i < r.getSize(); i++) {
current = indexr.getCurrentCounter();
if (current[dimIdx] == 0 || current[dimIdx] == shape[dimIdx] - 1) {
r.setDouble(indexr, Double.NaN);
} else {
cc = Arrays.copyOf(current, current.length);
cc[dimIdx] = cc[dimIdx] - 1;
index.set(cc);
a = data.getDouble(index);
cc[dimIdx] = cc[dimIdx] + 2;
index.set(cc);
b = data.getDouble(index);
if (Double.isNaN(a) || Double.isNaN(b)) {
r.setDouble(indexr, Double.NaN);
} else {
r.setDouble(indexr, a - b);
}
}
indexr.incr();
}
return r;
}
示例14: mulDouble
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array mulDouble(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.DOUBLE, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
if (Double.isNaN(a.getDouble(i)) || Double.isNaN(b.getDouble(i))) {
r.setDouble(i, Double.NaN);
} else {
r.setDouble(i, a.getDouble(i) * b.getDouble(i));
}
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.DOUBLE, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
if (Double.isNaN(a.getDouble(aindex)) || Double.isNaN(b.getDouble(bindex))) {
r.setDouble(i, Double.NaN);
} else {
r.setDouble(i, a.getDouble(aindex) * b.getDouble(bindex));
}
index.incr();
}
return r;
default:
return null;
}
}
示例15: divInt
import ucar.ma2.Index; //导入方法依赖的package包/类
private static Array divInt(Array a, Array b) {
int broadcast = broadcastCheck(a, b);
switch (broadcast) {
case 0:
Array r = Array.factory(DataType.INT, a.getShape());
for (int i = 0; i < a.getSize(); i++) {
if (a.getInt(i) == Integer.MIN_VALUE || b.getInt(i) == Integer.MIN_VALUE) {
r.setInt(i, Integer.MIN_VALUE);
} else {
r.setInt(i, a.getInt(i) / b.getInt(i));
}
}
return r;
case 1:
int[] shape = broadcast(a, b);
r = Array.factory(DataType.INT, shape);
Index index = r.getIndex();
Index aindex = a.getIndex();
Index bindex = b.getIndex();
int n = r.getRank();
int na = a.getRank();
int nb = b.getRank();
int[] current;
for (int i = 0; i < r.getSize(); i++) {
current = index.getCurrentCounter();
setIndex(aindex, bindex, current, n, na, nb);
if (a.getInt(aindex) == Integer.MIN_VALUE || b.getInt(bindex) == Integer.MIN_VALUE) {
r.setInt(i, Integer.MIN_VALUE);
} else {
r.setInt(i, a.getInt(aindex) / b.getInt(bindex));
}
index.incr();
}
return r;
default:
return null;
}
}