// Path: src/com/sin/java/dsp/base/ArgumentDescribe.java
// public class ArgumentDescribe {
// 	private ArgumentType type;
// 	private String describe;
// 
// 	public ArgumentDescribe(ArgumentType type, String describe) {
// 		super();
// 		this.type = type;
// 		this.describe = describe;
// 	}
// 
// 	public ArgumentType getType() {
// 		return type;
// 	}
// 
// 	public void setType(ArgumentType type) {
// 		this.type = type;
// 	}
// 
// 	public String getDescribe() {
// 		return describe;
// 	}
// 
// 	public void setDescribe(String describe) {
// 		this.describe = describe;
// 	}
// 	
// 	public static ArgumentDescribe intArray(String desc) {
// 		return new ArgumentDescribe(ArgumentType.TypeIntArray, desc);
// 	}
// 	public static ArgumentDescribe doubleArray(String desc) {
// 		return new ArgumentDescribe(ArgumentType.TypeDoubleArray, desc);
// 	}
// 	public static ArgumentDescribe complexArray(String desc) {
// 		return new ArgumentDescribe(ArgumentType.TypeComplexArray, desc);
// 	}
// 	public static ArgumentDescribe doubleArrayArray(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeDoubleArrayArray, desc);
// 	}
// 	public static ArgumentDescribe objectDictionary(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeDictionary, desc);
// 	}
// 	public static ArgumentDescribe string(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeString, desc);
// 	}
// 	public static ArgumentDescribe objectList(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeList, desc);
// 	}
// 	public static ArgumentDescribe object(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeObject, desc);
// 	}
// }
// 
// Path: src/com/sin/java/dsp/util/SinMath.java
// public final class SinMath {
// 
// 	/**
// 	 * 求平均值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @return 平均值
// 	 */
// 	public static double mean(double[] array) {
// 		return mean(array, 0, array.length);
// 	}
// 
// 	/**
// 	 * 求平均值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @param offset
// 	 *            数组下标偏移
// 	 * @param length
// 	 *            长度
// 	 * @return 平均值
// 	 */
// 	public static double mean(double[] array, int offset, int length) {
// 		int end = array.length > (offset + length) ? offset + length : array.length;
// 		double sum = 0;
// 		for (int i = offset; i < end; ++i) {
// 			sum += array[i];
// 		}
// 		return sum / (end - offset);
// 	}
// 
// 	/**
// 	 * 求最大值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @return 最大值
// 	 */
// 	public static double max(double[] array) {
// 		return max(array, 0, array.length);
// 	}
// 
// 	/**
// 	 * 求最大值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @param offset
// 	 *            数组下标偏移
// 	 * @param length
// 	 *            长度
// 	 * @return 最大值
// 	 */
// 	public static double max(double[] array, int offset, int length) {
// 		int end = array.length > (offset + length) ? offset + length : array.length;
// 		double max = array[offset];
// 		for (int i = offset; i < end; ++i) {
// 			if (array[i] > max)
// 				max = array[i];
// 		}
// 		return max;
// 	}
// 
// 	/**
// 	 * 求最小值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @return 最小值
// 	 */
// 	public static double min(double[] array) {
// 		return min(array, 0, array.length);
// 	}
// 
// 	/**
// 	 * 求最小值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @param offset
// 	 *            数组下标偏移
// 	 * @param length
// 	 *            长度
// 	 * @return 最小值
// 	 */
// 	public static double min(double[] array, int offset, int length) {
// 		int end = array.length > (offset + length) ? offset + length : array.length;
// 		double min = array[offset];
// 		for (int i = offset; i < end; ++i) {
// 			if (array[i] < min)
// 				min = array[i]; 
// 		}
// 		return min;
// 	}
// }


import com.sin.java.dsp.base.ArgumentDescribe;
import com.sin.java.dsp.util.SinMath;
package com.sin.java.dsp.filter;


/**
 * Double数组归一化
 * 
 * @author RobinTang
 * 
 */
public class ToOne extends BaseFilter {
	/**
	 * Double数组归一化
	 */
	public ToOne() {
		super("Double数组归一化", "", ArgumentDescribe.doubleArray("输入Double数组"), ArgumentDescribe.doubleArray("返回归一化Double数组"));
	}

	@Override
	public Object calculate(Object input) {
		double[] ins = (double[]) input;
		int len = ins.length;
		double[] ret = new double[len];
// Path: src/com/sin/java/dsp/base/ArgumentDescribe.java
// public class ArgumentDescribe {
// 	private ArgumentType type;
// 	private String describe;
// 
// 	public ArgumentDescribe(ArgumentType type, String describe) {
// 		super();
// 		this.type = type;
// 		this.describe = describe;
// 	}
// 
// 	public ArgumentType getType() {
// 		return type;
// 	}
// 
// 	public void setType(ArgumentType type) {
// 		this.type = type;
// 	}
// 
// 	public String getDescribe() {
// 		return describe;
// 	}
// 
// 	public void setDescribe(String describe) {
// 		this.describe = describe;
// 	}
// 	
// 	public static ArgumentDescribe intArray(String desc) {
// 		return new ArgumentDescribe(ArgumentType.TypeIntArray, desc);
// 	}
// 	public static ArgumentDescribe doubleArray(String desc) {
// 		return new ArgumentDescribe(ArgumentType.TypeDoubleArray, desc);
// 	}
// 	public static ArgumentDescribe complexArray(String desc) {
// 		return new ArgumentDescribe(ArgumentType.TypeComplexArray, desc);
// 	}
// 	public static ArgumentDescribe doubleArrayArray(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeDoubleArrayArray, desc);
// 	}
// 	public static ArgumentDescribe objectDictionary(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeDictionary, desc);
// 	}
// 	public static ArgumentDescribe string(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeString, desc);
// 	}
// 	public static ArgumentDescribe objectList(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeList, desc);
// 	}
// 	public static ArgumentDescribe object(String desc){
// 		return new ArgumentDescribe(ArgumentType.TypeObject, desc);
// 	}
// }
// 
// Path: src/com/sin/java/dsp/util/SinMath.java
// public final class SinMath {
// 
// 	/**
// 	 * 求平均值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @return 平均值
// 	 */
// 	public static double mean(double[] array) {
// 		return mean(array, 0, array.length);
// 	}
// 
// 	/**
// 	 * 求平均值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @param offset
// 	 *            数组下标偏移
// 	 * @param length
// 	 *            长度
// 	 * @return 平均值
// 	 */
// 	public static double mean(double[] array, int offset, int length) {
// 		int end = array.length > (offset + length) ? offset + length : array.length;
// 		double sum = 0;
// 		for (int i = offset; i < end; ++i) {
// 			sum += array[i];
// 		}
// 		return sum / (end - offset);
// 	}
// 
// 	/**
// 	 * 求最大值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @return 最大值
// 	 */
// 	public static double max(double[] array) {
// 		return max(array, 0, array.length);
// 	}
// 
// 	/**
// 	 * 求最大值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @param offset
// 	 *            数组下标偏移
// 	 * @param length
// 	 *            长度
// 	 * @return 最大值
// 	 */
// 	public static double max(double[] array, int offset, int length) {
// 		int end = array.length > (offset + length) ? offset + length : array.length;
// 		double max = array[offset];
// 		for (int i = offset; i < end; ++i) {
// 			if (array[i] > max)
// 				max = array[i];
// 		}
// 		return max;
// 	}
// 
// 	/**
// 	 * 求最小值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @return 最小值
// 	 */
// 	public static double min(double[] array) {
// 		return min(array, 0, array.length);
// 	}
// 
// 	/**
// 	 * 求最小值
// 	 * 
// 	 * @param array
// 	 *            输入的数组
// 	 * @param offset
// 	 *            数组下标偏移
// 	 * @param length
// 	 *            长度
// 	 * @return 最小值
// 	 */
// 	public static double min(double[] array, int offset, int length) {
// 		int end = array.length > (offset + length) ? offset + length : array.length;
// 		double min = array[offset];
// 		for (int i = offset; i < end; ++i) {
// 			if (array[i] < min)
// 				min = array[i]; 
// 		}
// 		return min;
// 	}
// }


// Path: src/com/sin/java/dsp/filter/ToOne.java
import com.sin.java.dsp.base.ArgumentDescribe;
import com.sin.java.dsp.util.SinMath;

package com.sin.java.dsp.filter;


/**
 * Double数组归一化
 * 
 * @author RobinTang
 * 
 */
public class ToOne extends BaseFilter {
	/**
	 * Double数组归一化
	 */
	public ToOne() {
		super("Double数组归一化", "", ArgumentDescribe.doubleArray("输入Double数组"), ArgumentDescribe.doubleArray("返回归一化Double数组"));
	}

	@Override
	public Object calculate(Object input) {
		double[] ins = (double[]) input;
		int len = ins.length;
		double[] ret = new double[len];
		double min = SinMath.min(ins);