Java examples for java.lang:Math Convert
Convert energy from db scale to linear scale.
/**// w w w .j a v a 2s . c o m * Copyright 2004-2006 DFKI GmbH. * All Rights Reserved. Use is subject to license terms. * * Permission is hereby granted, free of charge, to use and distribute * this software and its documentation without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of this work, and to * permit persons to whom this work is furnished to do so, subject to * the following conditions: * * 1. The code must retain the above copyright notice, this list of * conditions and the following disclaimer. * 2. Any modifications must be clearly marked as such. * 3. Original authors' names are not deleted. * 4. The authors' names are not used to endorse or promote products * derived from this software without specific prior written * permission. * * DFKI GMBH AND THE CONTRIBUTORS TO THIS WORK DISCLAIM ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DFKI GMBH NOR THE * CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF * THIS SOFTWARE. */ //package com.java2s; public class Main { /** The Constant LOG10. */ protected static final double LOG10 = Math.log(10); /** * Convert energy from db scale to linear scale. * * @param dbEnergy the db energy * @return energy on a linear scale. */ public static double db2linear(double dbEnergy) { if (Double.isNaN(dbEnergy)) return 0.; else return exp10(dbEnergy / 10); } /** * Db2linear. * * @param dbEnergies the db energies * @return the double[] */ public static double[] db2linear(double[] dbEnergies) { return exp10(divide(dbEnergies, 10)); } /** * Exp10. * * @param x the x * @return the double */ public static double exp10(double x) { return Math.exp(LOG10 * x); } /** * Exp10. * * @param a the a * @return the double[] */ public static double[] exp10(double[] a) { double[] c = new double[a.length]; for (int i = 0; i < a.length; i++) { c[i] = exp10(a[i]); } return c; } /** * Divide. * * @param a the a * @param b the b * @return the double[] */ public static double[] divide(double[] a, double[] b) { if (a.length != b.length) { throw new IllegalArgumentException( "Arrays must be equal length"); } double[] c = new double[a.length]; for (int i = 0; i < a.length; i++) { c[i] = a[i] / b[i]; } return c; } /** * Divide. * * @param a the a * @param b the b * @return the double[] */ public static double[] divide(double[] a, double b) { double[] c = new double[a.length]; for (int i = 0; i < a.length; i++) { c[i] = a[i] / b; } return c; } /** * Divide. * * @param x the x * @param a the a * @return the double[][] */ public static double[][] divide(double[][] x, double a) { return multiply(1.0 / a, x); } /** * Exp. * * @param a the a * @return the double[] */ public static double[] exp(double[] a) { double[] c = new double[a.length]; for (int i = 0; i < a.length; i++) { c[i] = Math.exp(a[i]); } return c; } /** * Multiply. * * @param a the a * @param b the b * @return the double[] */ public static double[] multiply(double[] a, double[] b) { if (a.length != b.length) { throw new IllegalArgumentException( "Arrays must be equal length"); } double[] c = new double[a.length]; for (int i = 0; i < a.length; i++) { c[i] = a[i] * b[i]; } return c; } /** * Multiply. * * @param a the a * @param b the b * @return the double[] */ public static double[] multiply(double[] a, double b) { double[] c = new double[a.length]; for (int i = 0; i < a.length; i++) { c[i] = a[i] * b; } return c; } /** * Multiply. * * @param a the a * @param x the x * @return the double[][] */ public static double[][] multiply(double a, double[][] x) { double[][] z = null; if (x != null) { int i, j; for (i = 1; i < x.length; i++) assert x[i].length == x[0].length; z = new double[x.length][x[0].length]; for (i = 0; i < x.length; i++) { for (j = 0; j < x[i].length; j++) z[i][j] = a * x[i][j]; } } return z; } }