当前位置: 首页>>代码示例>>Java>>正文


Java Index.getCurrentCounter方法代码示例

本文整理汇总了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;
    }
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:34,代码来源:ArrayUtil.java

示例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;
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:32,代码来源:ArrayMath.java

示例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;
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:46,代码来源:ArrayMath.java

示例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;
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:46,代码来源:ArrayUtil.java

示例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;
    }
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:33,代码来源:ArrayMath.java

示例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;
    }
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java

示例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;
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:48,代码来源:ArrayMath.java

示例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;
    }        
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java

示例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;
    }        
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:31,代码来源:ArrayMath.java

示例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;
    }
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java

示例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;
    }                
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java

示例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;
    }        
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java

示例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;
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java

示例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;
    }          
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java

示例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;
    }
}
 
开发者ID:meteoinfo,项目名称:MeteoInfoLib,代码行数:39,代码来源:ArrayMath.java


注:本文中的ucar.ma2.Index.getCurrentCounter方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。