⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 complex.java

📁 用java编写的用蝶式算法实现的fft
💻 JAVA
字号:
package project;

import java.util.StringTokenizer;


public class Complex {
	private double real;

	private double imag;

	private static final String delimiters = " (),\t";
	
	public Complex() {
	}

	public Complex(double r) {
		real = r;
	}

	public Complex(Complex c) {
		real = c.real;
		imag = c.imag;
	}

	public Complex(double r, double i) {
		real = r;
		imag = i;
	}

	public Complex(String c) throws ComplexException{

		if (c == null || c.length() == 0) {
			real = imag = 0.0;
			return;
		}

		StringTokenizer t = new StringTokenizer(c, delimiters);
		String[] data = new String[t.countTokens()];
		for (int i = 0; i < data.length; i++) {
			data[i] = t.nextToken();
		}

		switch (data.length) {
		case 1: 
			double tmp;
			tmp = Double.parseDouble(data[0]);

			String str = c.split(",")[0];
			if (str.indexOf(data[0]) >= 0) {
				real = tmp;
			} else {
				imag = tmp;
			}

			break;
		case 2: 
			real = Double.parseDouble(data[0]);
			imag = Double.parseDouble(data[1]);
			break;
		default:
			throw new ComplexException();
		}

	}

	public double getReal() {
		return real;
	}

	public double getModule()
	{
		return Math.sqrt(Math.pow(real,2)+Math.pow(imag, 2));
	}
	public double getImag() {
		return imag;
	}

	public void setReal(double r) {
		real = r;
	}

	public void setImag(double i) {
		imag = i;
	}

	public String toString() {
		return new String("(" + real + "," + imag + ")");
	}

	public Complex add(Complex c) {
		real += c.real;
		imag += c.imag;
		return this;
	}

	public Complex minus(Complex c) {
		real -= c.real;
		imag -= c.imag;
		return this;
	}

	public Complex multiply(Complex c) {
		double tmp = real;
		real = real * c.real - imag * c.imag;
		imag = tmp * c.imag + imag * c.real;
		return this;
	}

	public Complex divide(Complex c) {
		this.multiply(new Complex(c.real, -c.imag));

		double tmp = c.real * c.real + c.imag * c.imag;
		real /= tmp;
		imag /= tmp;
		return this;
	}

	public static Complex add(Complex c1, Complex c2) {
		return new Complex(c1.real + c2.real, c1.imag + c2.imag);
	}

	public static Complex minus(Complex c1, Complex c2) {
		return new Complex(c1.real - c2.real, c1.imag - c2.imag);
	}

	public static Complex multiply(Complex c1, Complex c2) {
		double real = c1.real * c2.real - c1.imag * c2.imag;
		double imag = c1.real * c2.imag + c1.imag * c2.real;
		return new Complex(real, imag);
	}

	public static Complex divide(Complex c1, Complex c2) {
		Complex c = new Complex(c2.real, -c2.imag);
		double tmp = c2.real * c2.real + c2.imag * c2.imag;

		c.multiply(c1);

		c.real /= tmp;
		c.imag /= tmp;
		return c;
	}

}

class ComplexException extends Exception {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public ComplexException(Exception e) {
		super(e);
	}

	public ComplexException() {
		super();
	}

	public String toString() {
		return "ComplexException: Maybe init string's form uncorrect.";
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -