Triang.java
/*
* $Id: Triang.java,v 1.9 2008/03/08 00:17:40 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.signal;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.matrix.IntMatrix;
/**
* 三角波状の信号を生成するクラスです。
*
* <p>Triangular window
*
* @author koga
* @version $Revision: 1.9 $
* @see org.mklab.tool.signal.Blackman
* @see org.mklab.tool.signal.Boxcar
*/
public class Triang {
/**
* <code>length</code>点の三角波状の信号を返します。
*
* @param length データ数
* @return 三角波状の信号 traiangular window
*/
public static DoubleMatrix triang(int length) {
DoubleMatrix window;
if (length % 2 != 0) {
window = new DoubleMatrix(IntMatrix.series(1, (length + 1) / 2)).multiply(2.0 / (length + 1));
window = window.appendRight(window.getSubVector(IntMatrix.series((length - 1) / 2, 1)));
} else {
window = new DoubleMatrix(IntMatrix.series(1, (length + 1) / 2)).multiply(2).subtractElementWise(1).divide((double)length);
window = window.appendRight(window.getSubVector(IntMatrix.series(length / 2, 1)));
}
return window;
}
}