您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 史密斯圆图演示 In Java
—1—课程设计报告课程名称微波通信技术课程设计报告题目Smith圆图软件及一种微波通信系统的设计指导教师设计起止日期2013、05、16–2013、06、06系别信息与通信工程学院专业通信工程学生姓名班级/学号成绩___________________—2—一、Smith圆图简要说明smith圆图早在计算机时代之前的1930年就被P.H.smith所开发。它是一种计算阻抗、反射系数等参量的简便图解方法。smith圆图是由很多圆周交织在一起的一个图。使用它,可以在不作任何计算的前提下得到一个表面上看非常复杂的系统的匹配阻抗,唯一需要做的就是沿着圆周线,根据电长度读取并跟踪数据。正是由于其只是涉及到简单的数学运算,方便而又直观,在解决阻抗匹配问题时,得到广泛的应用。二、Smith圆图的设计目的和要求1.设计内容:Smith圆图的软件设计。2.设计目的:通过具体的软件编程和多媒体制作,进一步加深对微波通信技术的理解和掌握,提高动手能力,提高解决实际问题的综合能力。3.涉及的课程:计算机高级语言编程(MATLAB,VC,VB等);微波通信技术;电磁场与电磁波;多媒体技术等。三、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面向对象语法特征,使用了用户图形界面的编程方式。图形用户界面的程序是在图形界面下创建与用户交互的控件元素,用户可以通过操作这些—3—交互控件实现特定的功能,并且可以返回显示在程序界面相应的结果显示区域中。用户图形界面编程大大提高了用户使用Matlab程序的易用性。3、软件界面4、软件功能介绍(1)、监听鼠标移动事件。移动时绘制电阻圆(红色)、电抗圆(黄色)和等反射系数圆(绿色)。(2)、监听鼠标点击事件。鼠标点击时,在右边同时计算出等反射系数(Γ),电压驻波比(ρ),输入阻抗(Z)。5、软件演示—4——5—四、实验总结五、参考资料1、李大年,杨曙辉.电磁场理论与微波工程[M].北京师范大学出版社,2009.2、廖卫东,陈梅.Java程序设计[M].机械工业出版社,2010.六、程序源代码1、SmithChart.java/***SmithChart演示程序**ChartPanel坐标系SmithChart坐标系*(0,0)(400,0)(-1,1)(1,1)—6—**(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;/**—7—*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);/********************************************************************//*********************************************************************数据面板—8—*/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(微软雅黑,Font.PLAIN,13));crcLabel.setBounds(20,60,90,18);reflectionCoefficient.add(crcLabel);JLabelelLabel=newJLabel(\u7535\u957F\u5EA6);elLabel.setHorizontalAlignment(SwingConstants.RIGHT);elLabel.setFont(newFont(微软雅黑,Font.PLAIN,13));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);—9—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.
本文标题:史密斯圆图演示 In Java
链接地址:https://www.777doc.com/doc-3283981 .html