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

📄 settaper.java

📁 天线阵列的涉及软件
💻 JAVA
字号:
/*
 *	SetTaper 
 *
 *	Button action to set up default current taper
 *
 *	Meirong He
 *	EEE Department
 *	University of Sheffield
 *	July 2005
 */

import java.awt.*;
import java.awt.event.*;

class SetTaper implements ActionListener {
		
	private Button button;
	private AntennaDesigner taper;
	
	public SetTaper (Button bb, AntennaDesigner tt) {	
		button=bb;
		taper=tt;
	}
	
	public void actionPerformed (ActionEvent e) {
		
		int N=taper.N;	
		double ai=0.0,pi=0.0;
		
		String com=button.getLabel();
		
		if (com.equals("Uniform Taper")) {
			for (int i=0; i<N; i++) {
				taper.amp[i].setText("1.0");
				taper.phase[i].setText(""+0.0);
			}
		}				//Set up uniform taper
		
		if (com.equals("Linear Taper")) {
			
			ai=0.7;
			double gradA=(1.0-0.7)/(N/2),gradP=10.0,trend=1.0;
			
			for (int i=0; i<N; i++) {
				
				if ((double)i!=(double)N/2.0)  {
					if (i>N/2) 	trend=-1.0;
					ai=(int)((ai+trend*gradA)*1000+0.5)/1000.0;	
				}
				pi=i*gradP;
				
				taper.amp[i].setText(""+ai);
				taper.phase[i].setText(""+pi);
			}
		}				//Set up linear taper
		
		if (com.equals("Cosine Taper")) {
				
			for (int i=0; i<N; i++) {
				ai=Math.sin(i*Math.PI/(N-1))*0.3+0.7;
				ai=(int)(ai*1000+0.5)/1000.0;	
				taper.amp[i].setText(""+ai);
				taper.phase[i].setText(""+0.0);
			}
		}				//Set up cosine taper
		
		if (com.equals("Taylor Taper")) {
			
			int nbar=(new Integer(new String(taper.sln.getText()))).intValue();
			double sideldb=Double.parseDouble(new String(taper.sll.getText()));
			double sidelr=Math.pow(10,sideldb/20.0);
			double A=Math.log(sidelr+Math.sqrt(sidelr*sidelr-1))/Math.PI;
			double thegma=nbar/Math.sqrt(A*A+Math.pow(nbar-0.5, 2));
			double d=taper.lamda*Double.parseDouble(new String(taper.spacing.getText()));
			double L=(N-1)*d;
			
			for (int i=0; i<N; i++) {
				ai=taylorAmplitude(Math.abs(i*d-L/2), A, nbar, L, thegma);
				ai=(int)(ai*1000+0.5)/1000.0;	
				taper.amp[i].setText(""+ai);
				taper.phase[i].setText(""+0.0);
			}
		}				//Set up Taylor taper
	}
	
	public double taylorAmplitude(double x, double A, int nbar, double L, double thegma) {
		
		double taylorAmp=0;
		for (int n=1; n<=(nbar-1); n++) {
			taylorAmp=taylorAmp+functionF(n, A, nbar, thegma)*Math.cos(n*x*Math.PI/L);
		}
		taylorAmp=(taylorAmp*2+functionF(0,A,nbar,thegma))/2/Math.PI;
		return taylorAmp;
	}
	
	public double functionF(int n, double A, int nbar, double thegma) {
		
		double factor=1;
		for (int m=1;m<=(nbar-1); m++) {
			factor=factor*(1-n*n/(thegma*(Math.pow(m-0.5,2)+A*A)*thegma));
		}
		factor=factor*Math.pow(factorial(nbar-1), 2)/factorial(nbar-1+n)/factorial(nbar-1-n);
		return factor;
	}
	
	public int factorial(int k) {
		int products=1;
		for (int i=1; i<=k; i++) products=products*i;
		return products;
	}
	
					// Functions for Taylor taper obtaining
}

⌨️ 快捷键说明

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