📄 settaper.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 + -