001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.math3.transform;
018
019 /**
020 * This enumeration defines the various types of normalizations that can be
021 * applied to discrete sine transforms (DST). The exact definition of these
022 * normalizations is detailed below.
023 *
024 * @see FastSineTransformer
025 * @version $Id: DstNormalization.java 1385310 2012-09-16 16:32:10Z tn $
026 * @since 3.0
027 */
028 public enum DstNormalization {
029 /**
030 * Should be passed to the constructor of {@link FastSineTransformer} to
031 * use the <em>standard</em> normalization convention. The standard DST-I
032 * normalization convention is defined as follows
033 * <ul>
034 * <li>forward transform: y<sub>n</sub> = ∑<sub>k=0</sub><sup>N-1</sup>
035 * x<sub>k</sub> sin(π nk / N),</li>
036 * <li>inverse transform: x<sub>k</sub> = (2 / N)
037 * ∑<sub>n=0</sub><sup>N-1</sup> y<sub>n</sub> sin(π nk / N),</li>
038 * </ul>
039 * where N is the size of the data sample, and x<sub>0</sub> = 0.
040 */
041 STANDARD_DST_I,
042
043 /**
044 * Should be passed to the constructor of {@link FastSineTransformer} to
045 * use the <em>orthogonal</em> normalization convention. The orthogonal
046 * DCT-I normalization convention is defined as follows
047 * <ul>
048 * <li>Forward transform: y<sub>n</sub> = √(2 / N)
049 * ∑<sub>k=0</sub><sup>N-1</sup> x<sub>k</sub> sin(π nk / N),</li>
050 * <li>Inverse transform: x<sub>k</sub> = √(2 / N)
051 * ∑<sub>n=0</sub><sup>N-1</sup> y<sub>n</sub> sin(π nk / N),</li>
052 * </ul>
053 * which makes the transform orthogonal. N is the size of the data sample,
054 * and x<sub>0</sub> = 0.
055 */
056 ORTHOGONAL_DST_I
057 }