1、三、Smith圆图的Matlab实现1、介绍Smith圆图设计要求计算结果以图形和数据并行输出,处理包括复数的矩阵运算。为使程序代码简单,执行运算速度快,计算精度高,选择matlab软件作为设计技术平台较为理想。圆图绘制程序是根据圆图构成原理所得方程进行编写的,即根据式9两圆方程进行编程。它可以绘制出相互正交的两组圆:等电阻圆和等电抗圆,其中等电阻圆是一组完整的圆。绘图角度自变量alpha的取值范围为02,等电抗圆实际上是与=0电阻圆相正交的一段圆弧,即弧AB。角度自变量的取值范围与x的取值有关系,关系为alpha_x= 2*atan(x)如图10所示。x不同 ,交点A不同 ,alpha_x也
2、随x而发生变化。求解步骤是:根据给定的x ,首先由式9求出对应r=0的、值 ,再由、求出alpha角 ,进而求出alpha_x角(alpha_x=-alpha,因两圆相互正交)。2.Matlab的GUI(Graphical User Interface)即用户图形界面程序设计 本软件使用了matlab面向对象语法特征,使用了用户图形界面的编程方式。图形用户界面的程序是在图形界面下创建与用户交互的控件元素,用户可以通过操作这些交互控件实现特定的功能,并且可以返回显示在程序界面相应的结果显示区域中。 用户图形界面编程大大提高了用户使用Matlab程序的易用性。3、软件界面4、软件功能介绍(1)、监
3、听鼠标移动事件。移动时绘制电阻圆(红色)、电抗圆(黄色)和等反射系数圆(绿色)。(2)、监听鼠标点击事件。鼠标点击时,在右边同时计算出等反射系数(),电压驻波比(),输入阻抗(Z)。5、软件演示四、实验总结五、参考资料1、李大年, 杨曙辉. 电磁场理论与微波工程M. 北京师范大学出版社, 2009.2、廖卫东, 陈梅. Java 程序设计 M. 机械工业出版社, 2010.六、程序源代码1、SmithChart.java/* * Smith Chart 演示程序 * * ChartPanel 坐标系 Smith Chart 坐标系 * (0, 0) (400, 0) (-1, 1) (1, 1
4、) * (200, 200) (0, 0) * (0, 400) (400, 400) (-1, -1) (1, -1) */package edu.bistu.hich;import java.awt.Color;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Font;import java.awt.Point;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;i
5、mport javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.SwingConstants;import javax.swing.border.EmptyBorder;import javax.swing.border.LineBorder;import javax.swing.JTextField; * Smith Chart 主面板 * author 仇之东 刘畅 * 05 - 26 - 2013public class SmithChart extends JFrame private static final
6、 long serialVersionUID = 1L; private JPanel contentPane; private JPanel chartPane; private JTextField swrText; private JTextField clcText; private JTextField reIi; private JTextField imIi; /* * Launch the application. public static void main(String args) EventQueue.invokeLater(new Runnable() public
7、void run() try SmithChart frame = new SmithChart(); frame.setVisible(true); catch (Exception e) e.printStackTrace(); ); * Create the frame. public SmithChart() setTitle(u53F2u5BC6u65AFu5706u56FEu6F14u793Au7A0Bu5E8F); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(300, 100, 780, 550); cont
8、entPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5); contentPane.setLayout(null); setContentPane(contentPane); /* * 图形面板 */ chartPane = new ChartPanel(); chartPane.setBackground(Color.BLACK); chartPane.setBounds(25, 25, 400, 400); chartPane.setSize(new Dimension(400, 400); Mous
9、eAction action = new MouseAction(); chartPane.addMouseListener(action); contentPane.add(chartPane); /*/ * 数据面板 JPanel dataPanel = new JPanel(); dataPanel.setBounds(435, 25, 320, 476); contentPane.add(dataPanel); dataPanel.setLayout(null); /- JPanel reflectionCoefficient = new JPanel(); reflectionCoe
10、fficient.setBorder(new LineBorder(new Color(0, 0, 255); reflectionCoefficient.setBounds(20, 10, 278, 122); dataPanel.add(reflectionCoefficient); reflectionCoefficient.setLayout(null); JLabel rcTitleLabel = new JLabel(u53CDu5C04u7CFBu6570 rcTitleLabel.setFont(new Font(微软雅黑, Font.BOLD, 16); rcTitleLab
11、el.setBounds(5, 5, 68, 22); reflectionCoefficient.add(rcTitleLabel); JLabel swrLabel = new JLabel(u7535u538Bu9A7Bu6CE2u6BD4 u03C1= swrLabel.setHorizontalAlignment(SwingConstants.RIGHT); swrLabel.setFont(new Font(, Font.PLAIN, 13); swrLabel.setBounds(20, 35, 90, 18); reflectionCoefficient.add(swrLabe
12、l); JLabel crcLabel = new JLabel(u7B49u53CDu5C04u7CFBu6570 u0393= crcLabel.setHorizontalAlignment(SwingConstants.RIGHT); crcLabel.setFont(new Font( crcLabel.setBounds(20, 60, 90, 18); reflectionCoefficient.add(crcLabel); JLabel elLabel = new JLabel(u7535u957Fu5EA6 elLabel.setHorizontalAlignment(Swin
13、gConstants.RIGHT); elLabel.setFont(new Font( elLabel.setBounds(20, 85, 85, 18); reflectionCoefficient.add(elLabel); swrText = new JTextField(); swrText.setEditable(false); swrText.setHorizontalAlignment(SwingConstants.TRAILING); swrText.setBounds(115, 35, 66, 18); reflectionCoefficient.add(swrText);
14、 swrText.setColumns(10); clcText = new JTextField(); clcText.setHorizontalAlignment(SwingConstants.RIGHT); clcText.setEditable(false); clcText.setColumns(10); clcText.setBounds(115, 60, 66, 18); reflectionCoefficient.add(clcText); JPanel singlestubMatching = new JPanel(); singlestubMatching.setBorde
15、r(new LineBorder(Color.BLUE); singlestubMatching.setBounds(20, 142, 278, 122); dataPanel.add(singlestubMatching); singlestubMatching.setLayout(null); JLabel smTitleLabel = new JLabel(u5355u652Fu8282u5339u914D smTitleLabel.setFont(new Font( smTitleLabel.setBounds(5, 5, 80, 22); singlestubMatching.add
16、(smTitleLabel); JLabel stubLenLabel = new JLabel(u77EDu622Au7EBFu957Fu5EA6 stubLenLabel.setHorizontalAlignment(SwingConstants.RIGHT); stubLenLabel.setFont(new Font( stubLenLabel.setBounds(20, 40, 85, 22); singlestubMatching.add(stubLenLabel); JLabel stubPosLabel = new JLabel(u77EDu622Au7EBFu4F4Du7F6
17、E stubPosLabel.setHorizontalAlignment(SwingConstants.RIGHT); stubPosLabel.setFont(new Font( stubPosLabel.setBounds(20, 75, 85, 22); singlestubMatching.add(stubPosLabel); JPanel inputImpedance = new JPanel(); inputImpedance.setBorder(new LineBorder(Color.BLUE); inputImpedance.setBounds(20, 274, 278,
18、122); dataPanel.add(inputImpedance); inputImpedance.setLayout(null); JLabel iiTitleLabel = new JLabel(u8F93u5165u963Bu6297 iiTitleLabel.setFont(new Font( iiTitleLabel.setBounds(5, 5, 68, 22); inputImpedance.add(iiTitleLabel); JLabel iiLabel = new JLabel(u8F93u5165u963Bu6297 Z= iiLabel.setHorizontalA
19、lignment(SwingConstants.RIGHT); iiLabel.setFont(new Font( iiLabel.setBounds(20, 50, 90, 18); inputImpedance.add(iiLabel); reIi = new JTextField(); reIi.setHorizontalAlignment(SwingConstants.TRAILING); reIi.setEditable(false); reIi.setColumns(10); reIi.setBounds(115, 50, 66, 18); inputImpedance.add(r
20、eIi); JLabel lblNewLabel = new JLabel(+j lblNewLabel.setBounds(185, 50, 15, 18); inputImpedance.add(lblNewLabel); imIi = new JTextField(); imIi.setHorizontalAlignment(SwingConstants.TRAILING); imIi.setEditable(false); imIi.setColumns(10); imIi.setBounds(200, 50, 66, 18); inputImpedance.add(imIi); JP
21、anel authorInfo = new JPanel(); authorInfo.setBounds(20, 406, 278, 60); authorInfo.setBorder(new LineBorder(Color.RED); dataPanel.add(authorInfo); JLabel label = new JLabel(u4F5Cu8005uFF1Au901Au4FE11001 u4EC7u6CBBu4E1C u5218u7545 label.setFont(new Font(, Font.PLAIN, 14); authorInfo.add(label); JLabe
22、l label_1 = new JLabel(u5B66u53F7uFF1A2010010383/2010010379 label_1.setFont(new Font(, Font.PLAIN, 12); authorInfo.add(label_1); * 标题面板 JPanel titlePanel = new JPanel(); titlePanel.setBounds(100, 435, 260, 50); contentPane.add(titlePanel); JLabel appTitle = new JLabel( titlePanel.add(appTitle); appT
23、itle.setFont(new Font(宋体, Font.BOLD, 28); appTitle.setHorizontalAlignment(SwingConstants.CENTER); class MouseAction implements MouseListener public void mouseClicked(MouseEvent e) System.out.println(Mouse Clicked! Point mousePoint = e.getPoint(); int x = mousePoint.x; int y = mousePoint.y;x - + x + , y - + y); long tmp = (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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1