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

📄 complex.java

📁 天线阵列的涉及软件
💻 JAVA
字号:
/*
 *	Complex
 *
 *	Performs complex number operation and coordinate transform.
 *
 *	Meirong He
 *	EEE Department
 *	University of Sheffield
 *	July 2005
 */

public class Complex {
	
	double real, ima, modu, ang;

	public Complex() {}

	public Complex (String coordinate, double rm, double ia) {

		if (coordinate.equals("orth") ){	
			real=rm; ima=ia;
			changePolar();
		}
		else if (coordinate.equals("polar"))
		{
			modu=rm; ang=ia;
			changeOrth();
		}
		else 
			System.out.println("Please indicate the coordinate, 'orth' or 'polar'!");
	}
				//Construction of complex number via orthogonal or polar coordinate
					
	public void addComp(Complex obj) {
		real=real+obj.real;
		ima=ima+obj.ima;
		changePolar();	
	}
				//Complex adding operation in orthogonal coordinate
	
	public void minusComp(Complex obj) {
		real=real-obj.real;
		ima=ima-obj.ima;
		changePolar();
	}
				//Complex subtracting operation in orthogonal coordinate
				
	public void multiplyComp(Complex obj) {
		modu=modu*obj.modu;
		ang=ang+obj.ang;
		changeOrth();
	}
				//Complex multiplying operation in polar coordinate
	
	public void divideComp(Complex obj) {
		
		if(obj.modu==0) {
			System.out.println("Cannot divide 0");
			return;
		}
		modu=modu/obj.modu;
		ang=ang-obj.ang;
		changeOrth();
	}
				//Complex division operation in polar coordinate
	
	public void setValue(String coordinate, double rm, double ia) {
		
		if (coordinate.equals("orth")) {
			real=rm; ima=ia;
			changePolar();
		}
		else if (coordinate.equals("polar")){
			modu=rm; ang=ia;
			changeOrth();
		}
		else 
			System.out.println("Please indicate the coordinate, 'orth' or 'polar'!");
	}
				//Change complex number directly
	
	public void setModule(double rm) {
		modu=rm;
		changeOrth();
	}
				
	public void setPhase(double ia) {
		ang=ia;
		changeOrth();
	}
	
	private void changePolar() {
		
		modu=Math.sqrt(real*real+ima*ima);
		
		if(real==0) {	
			if(ima==0) ang=0;		//To avoid dividing by zero
			else if(ima>0) ang=Math.PI/2;
			else ang=-Math.PI;
		}
		
		else {
			ang=Math.atan(ima/real);
			if (real<0) ang=ang+Math.PI;
						//To ensure proper angle within one circle
		}
	}
	
	private void changeOrth() {
		real=modu*Math.cos(ang);
		ima=modu*Math.sin(ang);
	}
	
	public Complex copy() {
		return new Complex("orth", real, ima);
	}
	
	public String toString() {
		
		double rr=((int)(real*1000))/1000.0;
		double ii=((int)(ima*1000))/1000.0;
		double mm=((int)(modu*1000))/1000.0;
		double aa=((int)(ang*1000))/1000.0;
		double cc=((int)(180*1000*aa/Math.PI))/1000.0;
						//To keep three decimals
		
		return " "+rr+"+j("+ii+")  modul="+mm+"  angle="+aa+ " / "+cc+"degree";
	}
}



⌨️ 快捷键说明

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