史密斯圆图演示 In Java.docx

上传人:b****6 文档编号:5623254 上传时间:2022-12-29 格式:DOCX 页数:22 大小:181.48KB
下载 相关 举报
史密斯圆图演示 In Java.docx_第1页
第1页 / 共22页
史密斯圆图演示 In Java.docx_第2页
第2页 / 共22页
史密斯圆图演示 In Java.docx_第3页
第3页 / 共22页
史密斯圆图演示 In Java.docx_第4页
第4页 / 共22页
史密斯圆图演示 In Java.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

史密斯圆图演示 In Java.docx

《史密斯圆图演示 In Java.docx》由会员分享,可在线阅读,更多相关《史密斯圆图演示 In Java.docx(22页珍藏版)》请在冰豆网上搜索。

史密斯圆图演示 In Java.docx

史密斯圆图演示InJava

课程设计报告

 

课程名称微波通信技术课程设计报告

题目Smith圆图软件及一种微波通信系统的设计

指导教师

设计起止日期2013、05、16–2013、06、06

 

系别信息与通信工程学院

专业通信工程

学生姓名

班级/学号

成绩___________________

一、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面向对象语法特征,使用了用户图形界面的编程方式。

图形用户界面的程序是在图形界面下创建与用户交互的控件元素,用户可以通过操作这些交互控件实现特定的功能,并且可以返回显示在程序界面相应的结果显示区域中。

用户图形界面编程大大提高了用户使用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("微软雅黑",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);

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("微软雅黑",Font.BOLD,16));

smTitleLabel.setBounds(5,5,80,22);

singlestubMatching.add(smTitleLabel);

JLabelstubLenLabel=newJLabel("\u77ED\u622A\u7EBF\u957F\u5EA6");

stubLenLabel.setHorizontalAlignment(SwingConstants.RIGHT);

stubLenLabel.setFont(newFont("微软雅黑",Font.PLAIN,13));

stubLenLabel.setBounds(20,40,85,22);

singlestubMatching.add(stubLenLabel);

JLabelstubPosLabel=newJLabel("\u77ED\u622A\u7EBF\u4F4D\u7F6E");

stubPosLabel.setHorizontalAlignment(SwingConstants.RIGHT);

stubPosLabel.setFont(newFont("微软雅黑",Font.PLAIN,13));

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("微软雅黑",Font.BOLD,16));

iiTitleLabel.setBounds(5,5,68,22);

inputImpedance.add(iiTitleLabel);

JLabeliiLabel=newJLabel("\u8F93\u5165\u963B\u6297Z=");

iiLabel.setHorizontalAlignment(SwingConstants.RIGHT);

iiLabel.setFont(newFont("微软雅黑",Font.PLAIN,13));

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("\u53F2\u5BC6\u65AF\u5706\u56FE\u6F14\u793A\u7A0B\u5E8F");

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;

System.out.println("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模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1