史密斯圆图演示 In JavaWord格式文档下载.docx
- 文档编号:18610359
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:22
- 大小:181.48KB
史密斯圆图演示 In JavaWord格式文档下载.docx
《史密斯圆图演示 In JavaWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《史密斯圆图演示 In JavaWord格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
三、Smith圆图的Matlab实现
1、介绍
Smith圆图设计要求计算结果以图形和数据并行输出,处理包括复数的矩阵运算。
为使程序代码简单,执行运算速度快,计算精度高,选择matlab软件作为设计技术平台较为理想。
圆图绘制程序是根据圆图构成原理所得方程进行编写的,即根据式9两圆方程进行编程。
它可以绘制出相互正交的两组圆:
等电阻圆和等电抗圆,其中等电阻圆是一组完整的圆。
绘图角度自变量alpha的取值范围为0~2π,等电抗圆实际上是与r=0电阻圆相正交的一段圆弧,即弧AB。
角度自变量的取值范围与x的取值有关系,关系为alpha_x=2*atan(x)如图10所示。
x不同,交点A不同,alpha_x也随x而发生变化。
求解步骤是:
根据给定的x,首先由式9求出对应r=0的u、v值,再由u、v求出alpha角,进而求出alpha_x角(alpha_x=π-alpha,因两圆相互正交)。
2.Matlab的GUI(GraphicalUserInterface)即用户图形界面程序设计
本软件使用了matlab面向对象语法特征,使用了用户图形界面的编程方式。
图形用户界面的程序是在图形界面下创建与用户交互的控件元素,用户可以通过操作这些交互控件实现特定的功能,并且可以返回显示在程序界面相应的结果显示区域中。
用户图形界面编程大大提高了用户使用Matlab程序的易用性。
3、软件界面
4、软件功能介绍
(1)、监听鼠标移动事件。
移动时绘制电阻圆(红色)、电抗圆(黄色)和等反射系数圆(绿色)。
(2)、监听鼠标点击事件。
鼠标点击时,在右边同时计算出等反射系数(Γ),电压驻波比(ρ),输入阻抗(Z)。
5、软件演示
四、实验总结
五、参考资料
1、李大年,杨曙辉.电磁场理论与微波工程[M].北京师范大学出版社,2009.
2、廖卫东,陈梅.Java程序设计[M].机械工业出版社,2010.
六、程序源代码
1、SmithChart.java
/**
*SmithChart演示程序
*
*ChartPanel坐标系SmithChart坐标系
*(0,0)(400,0)(-1,1)(1,1)
*(200,200)(0,0)
*(0,400)(400,400)(-1,-1)(1,-1)
*/
packageedu.bistu.hich;
importjava.awt.Color;
importjava.awt.Dimension;
importjava.awt.EventQueue;
importjava.awt.Font;
importjava.awt.Point;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.SwingConstants;
importjavax.swing.border.EmptyBorder;
importjavax.swing.border.LineBorder;
importjavax.swing.JTextField;
*SmithChart主面板
*@author仇之东刘畅
*05-26-2013
publicclassSmithChartextendsJFrame{
privatestaticfinallongserialVersionUID=1L;
privateJPanelcontentPane;
privateJPanelchartPane;
privateJTextFieldswrText;
privateJTextFieldclcText;
privateJTextFieldreIi;
privateJTextFieldimIi;
/**
*Launchtheapplication.
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
SmithChartframe=newSmithChart();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
*Createtheframe.
publicSmithChart(){
setTitle("
\u53F2\u5BC6\u65AF\u5706\u56FE\u6F14\u793A\u7A0B\u5E8F"
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(300,100,780,550);
contentPane=newJPanel();
contentPane.setBorder(newEmptyBorder(5,5,5,5));
contentPane.setLayout(null);
setContentPane(contentPane);
/********************************************************************
*图形面板
*/
chartPane=newChartPanel();
chartPane.setBackground(Color.BLACK);
chartPane.setBounds(25,25,400,400);
chartPane.setSize(newDimension(400,400));
MouseActionaction=newMouseAction();
chartPane.addMouseListener(action);
contentPane.add(chartPane);
/********************************************************************/
*数据面板
JPaneldataPanel=newJPanel();
dataPanel.setBounds(435,25,320,476);
contentPane.add(dataPanel);
dataPanel.setLayout(null);
//-------------------------------------------------------------------
JPanelreflectionCoefficient=newJPanel();
reflectionCoefficient.setBorder(newLineBorder(newColor(0,0,255)));
reflectionCoefficient.setBounds(20,10,278,122);
dataPanel.add(reflectionCoefficient);
reflectionCoefficient.setLayout(null);
JLabelrcTitleLabel=newJLabel("
\u53CD\u5C04\u7CFB\u6570"
rcTitleLabel.setFont(newFont("
微软雅黑"
Font.BOLD,16));
rcTitleLabel.setBounds(5,5,68,22);
reflectionCoefficient.add(rcTitleLabel);
JLabelswrLabel=newJLabel("
\u7535\u538B\u9A7B\u6CE2\u6BD4\u03C1="
swrLabel.setHorizontalAlignment(SwingConstants.RIGHT);
swrLabel.setFont(newFont("
Font.PLAIN,13));
swrLabel.setBounds(20,35,90,18);
reflectionCoefficient.add(swrLabel);
JLabelcrcLabel=newJLabel("
\u7B49\u53CD\u5C04\u7CFB\u6570\u0393="
crcLabel.setHorizontalAlignment(SwingConstants.RIGHT);
crcLabel.setFont(newFont("
crcLabel.setBounds(20,60,90,18);
reflectionCoefficient.add(crcLabel);
JLabelelLabel=newJLabel("
\u7535\u957F\u5EA6"
elLabel.setHorizontalAlignment(SwingConstants.RIGHT);
elLabel.setFont(newFont("
elLabel.setBounds(20,85,85,18);
;
reflectionCoefficient.add(elLabel);
swrText=newJTextField();
swrText.setEditable(false);
swrText.setHorizontalAlignment(SwingConstants.TRAILING);
swrText.setBounds(115,35,66,18);
reflectionCoefficient.add(swrText);
swrText.setColumns(10);
clcText=newJTextField();
clcText.setHorizontalAlignment(SwingConstants.RIGHT);
clcText.setEditable(false);
clcText.setColumns(10);
clcText.setBounds(115,60,66,18);
reflectionCoefficient.add(clcText);
JPanelsinglestubMatching=newJPanel();
singlestubMatching.setBorder(newLineBorder(Color.BLUE));
singlestubMatching.setBounds(20,142,278,122);
dataPanel.add(singlestubMatching);
singlestubMatching.setLayout(null);
JLabelsmTitleLabel=newJLabel("
\u5355\u652F\u8282\u5339\u914D"
smTitleLabel.setFont(newFont("
smTitleLabel.setBounds(5,5,80,22);
singlestubMatching.add(smTitleLabel);
JLabelstubLenLabel=newJLabel("
\u77ED\u622A\u7EBF\u957F\u5EA6"
stubLenLabel.setHorizontalAlignment(SwingConstants.RIGHT);
stubLenLabel.setFont(newFont("
stubLenLabel.setBounds(20,40,85,22);
singlestubMatching.add(stubLenLabel);
JLabelstubPosLabel=newJLabel("
\u77ED\u622A\u7EBF\u4F4D\u7F6E"
stubPosLabel.setHorizontalAlignment(SwingConstants.RIGHT);
stubPosLabel.setFont(newFont("
stubPosLabel.setBounds(20,75,85,22);
singlestubMatching.add(stubPosLabel);
JPanelinputImpedance=newJPanel();
inputImpedance.setBorder(newLineBorder(Color.BLUE));
inputImpedance.setBounds(20,274,278,122);
dataPanel.add(inputImpedance);
inputImpedance.setLayout(null);
JLabeliiTitleLabel=newJLabel("
\u8F93\u5165\u963B\u6297"
iiTitleLabel.setFont(newFont("
iiTitleLabel.setBounds(5,5,68,22);
inputImpedance.add(iiTitleLabel);
JLabeliiLabel=newJLabel("
\u8F93\u5165\u963B\u6297Z="
iiLabel.setHorizontalAlignment(SwingConstants.RIGHT);
iiLabel.setFont(newFont("
iiLabel.setBounds(20,50,90,18);
inputImpedance.add(iiLabel);
reIi=newJTextField();
reIi.setHorizontalAlignment(SwingConstants.TRAILING);
reIi.setEditable(false);
reIi.setColumns(10);
reIi.setBounds(115,50,66,18);
inputImpedance.add(reIi);
JLabellblNewLabel=newJLabel("
+j"
lblNewLabel.setBounds(185,50,15,18);
inputImpedance.add(lblNewLabel);
imIi=newJTextField();
imIi.setHorizontalAlignment(SwingConstants.TRAILING);
imIi.setEditable(false);
imIi.setColumns(10);
imIi.setBounds(200,50,66,18);
inputImpedance.add(imIi);
JPanelauthorInfo=newJPanel();
authorInfo.setBounds(20,406,278,60);
authorInfo.setBorder(newLineBorder(Color.RED));
dataPanel.add(authorInfo);
JLabellabel=newJLabel("
\u4F5C\u8005\uFF1A\u901A\u4FE11001\u4EC7\u6CBB\u4E1C\u5218\u7545"
label.setFont(newFont("
Font.PLAIN,14));
authorInfo.add(label);
JLabellabel_1=newJLabel("
\u5B66\u53F7\uFF1A2010010383/2010010379"
label_1.setFont(newFont("
Font.PLAIN,12));
authorInfo.add(label_1);
*标题面板
JPaneltitlePanel=newJPanel();
titlePanel.setBounds(100,435,260,50);
contentPane.add(titlePanel);
JLabelappTitle=newJLabel("
titlePanel.add(appTitle);
appTitle.setFont(newFont("
宋体"
Font.BOLD,28));
appTitle.setHorizontalAlignment(SwingConstants.CENTER);
classMouseActionimplementsMouseListener{
publicvoidmouseClicked(MouseEvente){
System.out.println("
MouseClicked!
!
"
PointmousePoint=e.getPoint();
intx=mousePoint.x;
inty=mousePoint.y;
x-->
"
+x+"
y-->
+y);
longtmp=(x-200)*(x-200)+(y-200)*(y-200);
if(tmp<
40000){
ChartPanel.flag=!
ChartPanel.flag;
if(ChartPanel.flag==false){
swrText.setText(ComputingUtils.subString(ComputingUtils.calRho(x,y)+"
));
clcText.setText(ComputingUtils.subString(Co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 史密斯圆图演示 In Java 史密斯 演示