DoubleUnitSystem.java
/**
* $Id: UnitSystem.java,v 1.10 2008/07/16 03:51:37 koga Exp $
*
* Copyright (C) 2004-2005 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.control.system.math;
import org.mklab.nfc.matrix.DoubleMatrix;
/**
* 単位システムを表わすクラスです。
*
* @author koga
* @version $Revision: 1.10 $
*/
public class DoubleUnitSystem extends DoubleConstantSystem {
/**
* 新しく生成された<code>UnitSystem</code>オブジェクトを初期化します。
*
* @param degree 次数
*/
public DoubleUnitSystem(final int degree) {
super(degree, degree);
if (degree != -1) {
setGain(DoubleMatrix.unit(degree, degree));
} else {
setAutoSize(true);
}
if (degree == 1) {
setExpression("1"); //$NON-NLS-1$
} else {
setExpression("I"); //$NON-NLS-1$
}
}
/**
* 新しく生成された<code>UnitSystem</code>オブジェクトを初期化します。
*
* @param inputSize 入力サイズ
* @param outputSize 出力サイズ
*/
public DoubleUnitSystem(int inputSize, int outputSize) {
super(inputSize, outputSize);
if (inputSize != -1 || outputSize != -1) {
setGain(DoubleMatrix.unit(inputSize, outputSize));
} else {
setAutoSize(true);
}
if (inputSize == 1 && outputSize == 1) {
setExpression("1"); //$NON-NLS-1$
} else {
setExpression("I"); //$NON-NLS-1$
}
}
/**
* {@inheritDoc}
*/
@Override
public void setInputSize(final int inputSize) {
if (inputSize == -1) {
return;
}
super.setInputSize(inputSize);
super.setOutputSize(inputSize);
setGain(DoubleMatrix.unit(inputSize, inputSize));
}
/**
* {@inheritDoc}
*/
@Override
public void setOutputSize(final int outputSize) {
if (outputSize == -1) {
return;
}
super.setInputSize(outputSize);
super.setOutputSize(outputSize);
setGain(DoubleMatrix.unit(outputSize, outputSize));
}
/**
* {@inheritDoc}
*/
@Override
public DoubleConstantSystem multiply(DoubleConstantSystem opponent) {
return opponent;
}
/**
* {@inheritDoc}
*/
@Override
public DoubleConstantSystem unaryMinus() {
return new DoubleNegativeUnitSystem(getInputSize());
}
/**
* {@inheritDoc}
*/
@Override
public boolean isUnit() {
return true;
}
/**
* {@inheritDoc}
*/
@Override
public boolean isUnitOperand() {
return true;
}
/**
* {@inheritDoc}
*/
@Override
public DoubleConstantSystem invertSign(){
return unaryMinus();
}
/**
* {@inheritDoc}
*/
@Override
public String toString(){
return "I"; //$NON-NLS-1$
}
}