微波传输线三种工作状态分析的MATLAB实现
- 格式:docx
- 大小:262.14 KB
- 文档页数:18
MATLAB是一个强大的数学计算和图形绘制软件,可用于模拟和仿真电磁场与微波技术。
下面是一个简单的示例,展示如何在MATLAB中进行电磁场与微波技术的仿真:
matlab复制代码
% 创建一个2D网格
[x, y] = meshgrid(-10:0.1:10, -10:0.1:10);
% 定义一个随机的复高斯电场分布
E = 10^(5) * exp(-1i * pi * (x.^2 + y.^2));
% 计算电场的幅度和相位
E_real = real(E);
E_imag = imag(E);
% 绘制电场的幅度和相位图像
figure;
subplot(2, 1, 1);
imagesc(x, y, abs(E));
title('幅度');
colorbar;
subplot(2, 1, 2);
imagesc(x, y, atan(E_imag / E_real));
title('相位');
colorbar;
上述代码使用MATLAB创建了一个2D网格,并在该网格上定义了一个随机的复高斯电场分布。
然后,代码计算了电场的幅度和相位,并使用imagesc函数绘制了它们的图像。
在这个示例中,我们使用了一个简单的电场分布,但您可以根据需要修改代码以模拟更复杂的电磁场和微波技术。
利用MATLAB进行信号处理的技巧MATLAB作为一种功能强大的软件工具,被广泛用于信号处理领域。
利用MATLAB进行信号处理的技巧包括数据预处理、滤波和频谱分析、时频分析、信号重构以及信号特征提取等。
这些技巧可以帮助工程师和研究人员在处理和分析信号时更加高效和准确。
数据预处理是信号处理的第一步。
在使用MATLAB处理信号之前,通常需要对原始数据进行清洗和整理。
这包括去除噪声、异常点和干扰等。
MATLAB提供了一系列的函数和工具箱,如滤波器设计工具箱、统计工具箱等,可以帮助用户对数据进行降噪、修复和填补缺失值等操作。
滤波和频谱分析是信号处理的关键技术之一。
在MATLAB中,有多种滤波器可供选择,例如低通滤波器、高通滤波器、带通滤波器和带阻滤波器等。
这些滤波器可以通过设计滤波器系数或直接调用现成的滤波器函数来实现。
频谱分析可以帮助我们了解信号的频率成分以及其在不同频段上的能量分布。
MATLAB提供了FFT(快速傅里叶变换)等函数,可以对信号进行频谱分析并绘制功率谱密度图。
时频分析是一种用于研究信号在时间和频率上的变化的技术。
在MATLAB 中,时频分析常常使用短时傅里叶变换(STFT)、连续小波变换(CWT)和时域相关性分析等方法。
这些方法可以帮助我们观察信号的瞬时频谱特征,如频谱随时间变化的情况,从而揭示信号中的瞬态和周期性信息。
信号重构是指根据已有的数据或部分数据,通过一定的算法或模型来还原或预测信号的缺失或未来的数值。
在MATLAB中,可以利用插值、外推、拟合曲线等方法对信号进行重构。
这些方法基于信号的特征和统计信息进行计算,可以准确地估计未知数据或缺失数据的数值。
除了信号重构,信号特征提取也是信号处理中的重要一步。
通过提取信号的特征,我们可以了解到信号的统计特性、频域特性、时域特性等。
在MATLAB中,提取信号的特征通常使用统计学和谱分析等方法。
这些方法可以帮助我们提取信号的均值、方差、能量、峰值频率等特征,并用于信号分类、模式识别和故障检测等应用领域。
MATLAB中的信号调制与解调技巧随着科技的不断发展,无线通信越来越成为人们生活中不可或缺的一部分。
在无线通信系统中,信号调制与解调技巧起到至关重要的作用。
而MATLAB作为一种强大的工具,能够帮助工程师们在信号调制与解调方面进行深入研究和实践。
一、信号调制的基本原理与方法信号调制是将原始信号(baseband signal)通过改变某些参数来转换为调制信号(modulated signal)。
常见的信号调制方法包括幅度调制(AM)、频率调制(FM)和相位调制(PM)。
1.1 幅度调制幅度调制是一种通过改变信号的振幅来调制信号的方法。
MATLAB提供了丰富的函数和工具箱,可以方便地进行幅度调制的模拟和分析。
例如,我们可以使用MATLAB中的ammod函数来模拟幅度调制过程。
首先,我们需要准备一个原始信号,可以是一个正弦波或任何其他波形。
然后,通过设置调制指数(modulation index)来改变振幅。
最后,使用ammod函数对原始信号进行调制,生成调制后的信号。
1.2 频率调制频率调制是一种通过改变信号的频率来实现调制的方法。
以调幅电台为例,电台信号的频率会随着音频信号的变化而改变。
在MATLAB中,我们可以利用fmmod函数来模拟频率调制过程。
类似于幅度调制,我们需要先准备一个原始信号。
然后,通过设置调制指数和载波频率来改变频率。
最后,使用fmmod函数对原始信号进行调制,生成调制后的信号。
1.3 相位调制相位调制是一种通过改变信号的相位来实现调制的方法。
在数字通信系统中,相位调制常用于传输和提取数字信息。
MATLAB中的pmmod函数可以方便地实现相位调制。
与前两种调制方法类似,我们需要先准备一个原始信号。
然后,设置调制指数和载波频率来改变相位。
最后,使用pmmod函数对原始信号进行调制,生成调制后的信号。
二、信号解调的基本原理与方法信号解调是将调制信号恢复为原始信号的过程。
解调方法通常与调制方法相对应,常见的解调方法包括幅度解调(AM)、频率解调(FM)和相位解调(PM)。
微波传输线信号完整性分析与仿真摘要:随着对高速数字电路不断地深入研发,信号完整性越来越受到人们的关注,现已成为设计中必不可少的组成部分。
尤其在PCB设计阶段,大多数的约束都是建立在信号完整性分析的基础之上。
深入理解信号完整性方面的知识,有助于建立更为符合实际的约束的制定,同时也是进行信号完整性分析的必要条件。
本文就微波传输线信号完整性分析与仿真进行探讨。
关键词:微波传输线;信号完整性;仿真引言如今,高速系统的设计必须充分考虑到互连延迟引起的时序以及串扰、传输线效应等信号完整性问题。
元器件在CPB上的布局、元器件和CPB的参数、高速信号的布线等因素,都会引起信号完整性问题,进而导致系统工作不稳定,甚至无法工作。
所以,信号完整性问题越来越重要,已经引起电子工程师的高度重视。
本文将探讨信号完整性的基本概念以及如何基于IBIS模型对高速数据采集系统进行信号完整性仿真并利用仿真结果修改完善系统设计的问题。
一、基于IBIS模型的信号完整性分析信号完整性是指在信号线上的信号质量。
信号完整性故障会引起任意信号波形的跳变,导致把输人的畸变数据送人锁存,或在畸变的时钟跳变沿上造成在错误的时间捕获数据。
信号完整性分析的目的就是保证高速数据传输的可靠性。
1.1影晌信号完整性的主要因素影响信号完整性的主要因素有信号时延、反射与振铃、串扰、电磁兼容性或者电磁干扰(EMC/EMI)和电源/地噪声(地弹、Delta—I噪声或者同步开关噪声(SSN)等等。
传输时延与信号线的长度、信号传输速度的关系如下式中C为真空中的光速;reff为有效相对的介电常数;称为信号线的长度。
反射就是在传输线上的回波。
输人输出阻抗不匹配会引起反射,当信号在源端与负载端之间多次反射,在稳态信号上下产生的电压过冲和下冲现象,就是振铃。
串扰是指走线、导线、电缆束、元件以及任意其它易受电磁场干扰的电子元器件之间的不希望有的电磁祸合。
地弹指在电路中有大的电流涌动时,会引起地平面反弹噪声。
使用Matlab进行信号调制和解调技术信号调制和解调是通信系统中非常重要的环节,它们能够将原始信号转换为适合传输的调制信号,并在接收端将其恢复为原始信号。
Matlab是一种功能强大的工具,提供了丰富的信号处理函数和算法,可以方便地进行信号调制和解调的研究与实现。
本文将介绍如何使用Matlab进行信号调制和解调技术,并通过实例展示其在通信系统中的应用和效果。
一、调制技术概述调制技术是将需要传输的信息信号转换为载波信号的过程。
常见的调制技术包括幅度调制(AM)、频率调制(FM)和相位调制(PM)。
调制的目的是将低频信号转换为高频信号,使得信号能够在较长距离传输,并能够通过信道传输到接收端。
在Matlab中,可以使用内置函数如ammod、fmmod和pmmod来实现不同的调制技术。
以幅度调制为例,可以使用ammod函数来实现。
下面给出一个简单的幅度调制实例。
```matlabfs = 1000; % 采样频率t = 0:1/fs:1-1/fs; % 时间序列fc = 100; % 载波频率Ac = 1; % 载波幅度ym = sin(2*pi*10*t); % 原始信号ym_mod = ammod(ym, fc, fs, Ac); % 幅度调制```上述代码中,首先定义了采样频率fs、时间序列t、载波频率fc和载波幅度Ac。
然后,生成了一个原始信号ym,其中使用了sin函数生成了一个频率为10Hz的正弦波。
最后使用ammod函数对原始信号进行幅度调制,得到了调制后的信号ym_mod。
二、解调技术概述解调技术是将调制后的信号恢复为原始信号的过程。
解调技术主要包括幅度解调(AM)、频率解调(FM)和相位解调(PM)。
解调的目的是从调制信号中提取出原始信号,以实现信息的传输。
在Matlab中,可以使用内置函数如amdemod、fmdemod和pmdemod来实现不同的解调技术。
以幅度解调为例,可以使用amdemod函数来实现。
Matlab中的信号处理方法与示例分析引言:信号处理是指对信号进行采集、变换、压缩、恢复等操作的一种技术。
在现代科学和工程领域中,信号处理在音频、图像、视频等领域中有着广泛的应用。
Matlab作为一款功能强大的科学计算软件,提供了丰富的信号处理工具箱,方便用户进行信号处理的研究和应用。
本文将介绍Matlab中的信号处理方法以及一些示例分析。
一、时域分析1.基本信号生成:Matlab可以方便地生成各种基本信号,如正弦信号、方波信号、脉冲信号等。
利用Matlab编写的生成函数,可以通过输入参数来灵活生成所需的信号。
2.时域图像绘制:利用Matlab的图像绘制函数,可以将信号在时域上进行可视化表示。
通过绘制的时域图像,我们可以对信号的幅值、波形等特征进行直观的观察和分析。
3.时域运算:利用Matlab的向量化运算,我们可以对信号进行各种时域运算,如加法、减法、乘法、除法等。
这些操作对于研究信号的变换和传输过程具有重要的意义。
二、频域分析1.快速傅里叶变换(FFT):Matlab提供了方便的FFT函数,可以对信号进行频域分析,得到信号在频域上的表示。
通过FFT变换后的结果,我们可以得到信号的功率谱密度、频谱等信息。
2.频谱图绘制:Matlab中的频谱图绘制函数可以将信号的频谱绘制成直观的图像,帮助我们更好地理解信号的频率特征。
通过频谱图的分析,可以发现信号中的主要频率成分以及噪声等信息。
3.滤波操作:通过在频域上对信号进行滤波操作,可以实现信号的去噪、降噪等目的。
Matlab中提供了丰富的滤波函数和滤波器设计工具,方便用户进行信号滤波处理。
三、小波分析1.小波变换:小波变换是一种非平稳信号分析的有效方法。
Matlab中有多种小波变换函数,可以对信号进行小波变换,并得到信号在时频域上的表示。
小波变换可以更好地捕捉信号的瞬时特征,对于研究非平稳信号非常有用。
2.小波包分解:Matlab提供了小波包分解函数,可以将信号进行小波包变换,并得到信号在不同频带的分解系数。
基于MATLAB的微波传输状态仿真应用设计作者:王梦瑶来源:《西部论丛》2020年第08期摘要:微波指的是频率在300MHz至3000GHz的电磁波,最重要应用是雷达和通信。
雷达不仅用于国防,同时也用于导航、气象测量、工业检测和交通管理等方面。
通信应用主要是现代的卫星通信和常规的中继通信。
微波的三种传输状态,是微波传输理论分析的基础。
本文将针对微波传输的特性,利用MATLAB的RF模块设计出微波传输状态的仿真分析软件。
关键词:微波,仿真,matlab,传输状态一、微波简介微波是指频率在300MHz至3000GHz的电磁波。
由于特殊的频率,微波又被称为超高频电磁波,其对应波长为0.1mm到1米之间,是分米波、厘米波、毫米波与亚毫米波的统称。
微波凭借着独特的波长和频率,其波长范围和人类基本几何尺寸在同一个数量级,所以微波在通信和生活方面都有非常巨大的研究和应用的意义。
微波的基本性质通常呈现为穿透、反射、吸收三个特性。
其中,穿透性指的是微波相较于其他红外,远红外等用于加热的电磁波具有更长的波长,可以使介质材料内部、外部几乎同时加热升温,形成体热源状态,大大缩短了常规加热中的热传导时间[1];反射性指的是对于金属类的物质,微波不会穿透或者吸收,则是反射,故而,大量的波导结构均为金属波导;吸收特性则指的是对于水和食物等就会吸收微波而使自身发热[2]微波在通信中的应用主要体现在无线通信中。
微波作为无线通信的一个重要波段,其波长的长度决定了微波元器件的几何尺寸可以做到毫米级别,符合当前继承设备的要求。
在研究微波的过程中,主要有传统场论方法,化场为路的方法,以及网络化的方法。
其中,场论的方法最为准确,但同时也由于其涉及大量的电磁学理论,研究起来具有一定的难度;网络化的分析方法,则是利用黑盒理论,忽略微波元器件的几何结构以及内部场的变化,关注输入和输出的变化;化场为路的方法,则是将抽象的难以捕捉的微波传输过程等效为基本电路结构,通过路的理论和方法,对其进行研究。
(一)主程序变量说明:输入变量:zo 传输线特性阻抗zl 传输线终端负载阻抗Er 传输线介电常数f 传输电磁波的频率由输入变量计算得出的变量:w 传输电磁波的数字角频率len 传输电磁波的相波长beita 相移常数gama 传输线个点反射系数复值gamal 传输线终端反射系数的模rou 驻波系数k 行波系数Zi 传输线各点输入阻抗的复值Ui 传输线各点输入电压的复值Uo 传输线各点输出电压的复值Uit 传输线各点输入电压的瞬时值Uot 传输线各点输出电压的瞬时值Ii 传输线各点输入电流的复值Io 传输线各点输出电流的复值Is 传输线各点合成电流的复值Us 传输线各点合成电压的复值Ist 传输线各点合成电流的瞬时值Ust 传输线各点合成电压的瞬时值ph 传输线各点合成电压的相位(二)主程序流程说明:本程序的界面中共有三个输入编辑框,三个输出编辑框和五个波形显示窗口,分别用来输入:传输线特性阻抗Z0、传输线终端负载阻抗Z L、传输的电磁波的频率f、传输线传输介质的相对介电常数εr;输出:传输线的终端反射系数ΓL、行波系数ρ、驻波系数K;具体的程序思路如下:1.由输入编辑框获得用户输入的Z0、Z L、f和εr;2.在“开始”按钮的callback函数中进行运算,并控制各个axis的显示;3.图形的动态显示由一个while循环实现,并由全局标记变量flag控制;4.在“停止”按钮的callback函数中令flag = 1,while循环跳出。
(三)程序运行效果1.行波演示中端接匹配负载zo = zl = 50Ω2.驻波演示1)终端短路zo = 50Ωzl = 02)终端开路zo = 50Ωzl = inf3)终端接纯电抗负载zo = 50Ωzl = X * j3.行驻波演示(四)主程序代码function varargout = StatusAnaly(varargin)%********************************************************%% Copyright (C), 2009-2012,Lyric %% FileName: StatusAnaly.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% STATUSANALY M-file for StatusAnaly.fig% STATUSANALY, by itself, creates a new STATUSANALY or raises the existing% singleton*.%% H = STATUSANALY returns the handle to a new STATUSANALY or the handle to % the existing singleton*.%% STATUSANALY('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in STATUSANALY.M with the given input arguments. %% STATUSANALY('Property','Value',...) creates a new STATUSANALY or raises the % existing singleton*. Starting from the left, property value pairs are% applied to the GUI before StatusAnaly_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to StatusAnaly_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help StatusAnaly% Last Modified by GUIDE v2.5 11-May-2010 14:30:20% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @StatusAnaly_OpeningFcn, ...'gui_OutputFcn', @StatusAnaly_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before StatusAnaly is made visible.function StatusAnaly_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to StatusAnaly (see VARARGIN)% Choose default command line output for StatusAnalyhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes StatusAnaly wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = StatusAnaly_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;function edit_zo_Callback(hObject, eventdata, handles)% hObject handle to edit_zo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_zo as text% str2double(get(hObject,'String')) returns contents of edit_zo as a double% --- Executes during object creation, after setting all properties.function edit_zo_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_zo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_zl_Callback(hObject, eventdata, handles)% hObject handle to edit_zl (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_zl as text% str2double(get(hObject,'String')) returns contents of edit_zl as a double% --- Executes during object creation, after setting all properties.function edit_zl_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_zl (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in btn_begin.function btn_begin_Callback(hObject, eventdata, handles)% hObject handle to btn_begin (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%获得传输线特性阻抗temp = get(handles.edit_zo, 'string');zo = str2num(temp);%获得传输线负载阻抗temp = get(handles.edit_zl, 'string');zl = str2num(temp);%获得传输介质相对介电常数temp = get(handles.edit_Er, 'string');Er = str2num(temp);%获得传输线上传播的电磁波频率temp = get(handles.edit_f, 'string');f = str2num(temp) * 1000000;w = 2 * pi * f;%获得相波长、相位常数len = GetLen(f, Er);L = 2 * len; %横坐标范围L为两倍的相波长beita = GetBeita(f, Er);z = linspace(0, L, 200);zn = z ./ len; %zn为相对于相波长len归一化的横坐标%获得反射系数[gamal, gama] = GetGama(zo, zl, beita, z);set(handles.edit_gama, 'string', num2str(abs(gamal)));%获得驻波系数rou = GetRou(gamal);set(handles.edit_rou, 'string', num2str(rou));%获得行波系数k = 1 / rou;set(handles.edit_k, 'string', num2str(k));t = 0;Ts = 0.06;fs = 4 * f;%标记变量,当flag = 1 时图像停止,当flag = 0 时图像继续运动global flagflag = 0;while flag == 0%获得传输线输入阻抗Zi = GetZi(zo, gama);%绘制传输线输入阻抗plot(handles.axes_zi, zn, abs(Zi));if max(abs(Zi)) > 500limzL = 0;limzH = 500;elseif (max(abs(Zi)) - min(abs(Zi))) < 1limzL = min(abs(Zi)) - 1;limzH = max(abs(Zi)) + 1;elselimzL = min(abs(Zi));limzH = max(abs(Zi));endaxis(handles.axes_zi, [0, max(zn), limzL, limzH]);title(handles.axes_zi, '输入电阻波形');xlabel(handles.axes_zi, 'z(lamda)');ylabel(handles.axes_zi, 'Zin(ohmic)');%获得传输线输入输出电压[Ui, Uo] = GetUio(beita, gama, z);[Uit, Uot] = GetUiot(Ui, Uo, f, t);%绘制传输线输入输出电压plot(handles.axes_u, zn, Uit, 'b', zn, Uot, 'r');axis(handles.axes_u, [0, max(zn), -1, 1]);title(handles.axes_u, '入射和反射电压波形');xlabel(handles.axes_u, 'z(lamda)');ylabel(handles.axes_u, 'Ui/Uo(V)');legend(handles.axes_u, 'Ui', 'Uo', 2);%获得传输线入射和反射电流[Ii, Io] = GetIio(Ui, zo, gama);%获得传输线合成电压、电流[Is, Us] = GetIUs(Ui, Uo, Ii, Io);[Ist, Ust] = GetIUst(Is, Us, f, t);%绘制传输线合成电压、电流plot(handles.axes_us, zn, Ust);limu = 1 + abs(gamal);axis(handles.axes_us, [0, max(zn), -limu, limu]);title(handles.axes_us, '合成电压波形');xlabel(handles.axes_us, 'z(lamda)');ylabel(handles.axes_us, 'Us(V)');plot(handles.axes_is, zn, Ist);limi = (1 + abs(gamal)) / zo;axis(handles.axes_is, [0, max(zn), -limi, limi]);title(handles.axes_is, '合成电流波形');xlabel(handles.axes_is, 'z(lamda)');ylabel(handles.axes_is, 'Is(A)');%获得并绘制电压相位ph = angle(Us .* exp(1i * 2 * pi * f /fs * t));plot(handles.axes_ph, zn, ph / pi);axis(handles.axes_ph, [0, max(zn), -1.1, 1.1]);title(handles.axes_ph, '合成电压相位波形');xlabel(handles.axes_ph, 'z(lamda)');ylabel(handles.axes_ph, 'thita(pi)');t = t + Ts;pause(Ts);end% --- Executes on button press in btn_stop.function btn_stop_Callback(hObject, eventdata, handles)% hObject handle to btn_stop (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global flagflag = 1;function edit_gama_Callback(hObject, eventdata, handles)% hObject handle to edit_gama (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_gama as text% str2double(get(hObject,'String')) returns contents of edit_gama as a double% --- Executes during object creation, after setting all properties.function edit_gama_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_gama (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_rou_Callback(hObject, eventdata, handles)% hObject handle to edit_rou (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_rou as text% str2double(get(hObject,'String')) returns contents of edit_rou as a double% --- Executes during object creation, after setting all properties.function edit_rou_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_rou (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_k_Callback(hObject, eventdata, handles)% hObject handle to edit_k (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_k as text% str2double(get(hObject,'String')) returns contents of edit_k as a double% --- Executes during object creation, after setting all properties.function edit_k_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_k (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_f_Callback(hObject, eventdata, handles)% hObject handle to edit_f (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_f as text% str2double(get(hObject,'String')) returns contents of edit_f as a double% --- Executes during object creation, after setting all properties.function edit_f_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_f (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_Er_Callback(hObject, eventdata, handles)% hObject handle to edit_Er (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_Er as text% str2double(get(hObject,'String')) returns contents of edit_Er as a double% --- Executes during object creation, after setting all properties.function edit_Er_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_Er (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function axes_u_CreateFcn(hObject, eventdata, handles)% hObject handle to axes_u (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes_u(五)子程序代码(按照在主程序中出现的顺序排列)function Len = GetLen(f, Er)%********************************************************%% Copyright (C), 2009-2012,Lyric %% FileName: GetLen.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetLen% Description: 获得传输线上所传输的电磁波的相波长% Called By: StatusAnaly.m% Input: f 传输线中所传输电磁波的频率% Er 传输线中传输介质的相对介电常数% Return: Len 传输线中所传电磁波的相波长C = 300000000;Len = C / f / sqrt(Er);function Beita = GetBeita(f, Er)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetBeita.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetBeita% Description: get the phase-shift constant 获得相移常数% Called By: StatusAnaly.m% Input: f the freqency of the wave propagated in the medium % Er the relative permittivity of the medium% Return: Beita the phase-shift constant of the wavepi = 3.1415926;%真空中的电磁波速度,单位:m/sC=300000000;%数字角频率W = 2 * pi * f;Beita = W * sqrt(Er) / C;function [GamaL, Gama] = GetGama(zo, zl, beita, z)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetGama.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetGama% Description: get the reflection coefficient 获得反射系数% Called By: StatusAnaly.m% Input: zo the characteristic impedance of the transmission line % zl the load impedance of the transmission line% beita the phase-shift constant of the transmission line% z 相对于相波长归一化的横坐标% Return: GamaL 反射系数的模值% Gama 反射系数的复值if zl == infGamaL = 1;elseGamaL = (zl - zo) / (zl + zo);endGama = abs(GamaL) .* exp(-1i * 2 .* beita .* z);function Rou = GetRou(gamal)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetRou.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetRou% Description: 获得传输线上的驻波系数% Called By: StatusAnaly.m% Input: gamal 传输线上的反射系数% Return: Rou 传输线上的驻波系数Gamal = abs(gamal);Rou = (1 + Gamal) / (1 - Gamal);function Zi = GetZi(zo, gama)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetZi.m % % Author: Lyric % % Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetZi% Description: 获得传输线上各点输入阻抗的复值% Called By: StatusAnaly.m% Input: zo 传输线的特性阻抗% gama 传输线上反射系数的复值% Return: Zi 传输线上各点输入阻抗的复值Zi = zo .* ((1 + gama) ./ (1 - gama));function [Ui, Uo] = GetUio(beita, gama, z)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetUio.m % % Author: Lyric % % Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetUio% Description: 获得输入输出电压的复值% Called By: StatusAnaly.m% Input: beita 传输线上电磁波的相移常数% gama 传输线上电磁波的反射系数% z 相对于相波长归一化的横坐标% Return: Ui 输入电压复值% Uo 输出电压复值% 假定输入电压模值为1U = 1;Ui = U * exp(1i * beita * z);Uo = Ui .* gama;function [Uit, Uot] = GetUiot(Ui, Uo, f, t)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetUiot.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetUiot% Description: 获得输入输出电压瞬时值% Called By: StatusAnaly.m% Input: Ui 输入电压复值% Uo 输出电压复值% f 传输线上所传的电磁波的频率% t 当前时刻% Return: Uit 输入电压瞬时值% Uot 输出电压瞬时值%获得输入输出电压瞬时值fs = 4 * f;Uit = real(Ui .* exp(1i * 2 * pi * f / fs * t));Uot = real(Uo .* exp(1i * 2 * pi * f / fs * t));function [Ii, Io] = GetIio(Ui, zo, gama)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetIio.m %% Author: Lyric % % Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetIio% Description: 获得输入和输出电流的复值% Called By: StatusAnaly.m% Input: Ui 输入电压的复值% zo 传输线特征阻抗% gama 反射系数复值% Return: Ii 输入电流复值% Io 输出电流复值%获得输入输出电流复值Ii = Ui / zo;Io = - Ii .* gama;function [Is, Us] = GetIUs(Ui, Uo, Ii, Io)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetIUs.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetIUs% Description: 获得合成电压电流复值% Called By: StatusAnaly.m% Input: Ui 输入电压复值% Uo 输出电压复值% Ii 输入电流复值% Io 输出电流复值% Return: Is 合成电流复值% Us 合成电压复值%获得合成电压电流复值%I2 = 1;%U2 = Zl * I2;%Us = U2 * cos(beita .* z) + 1i * Zo * I2 * sin(beita .* z);%Is = 1i * U2 /Zo * sin(beita .* z) + I2 * cos(beita .* z);Us = Ui + Uo;Is = Ii + Io;function [Ist, Ust] = GetIUst(Is, Us, f, t)%********************************************************%% Copyright (C), 2009-2012,Lyric %% FileName: GetIUst.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetIUst% Description: 获得合成电压电流瞬时值% Called By: StatusAnaly.m% Input: Is 合成电流复值% Us 合成电压复值% f 电磁波频率% t 当前时间% Return: Ist 合成电流瞬时值% Ust 合成电压瞬时值%获得合成电压电流瞬时值fs = 4 * f;Ust = real(Us .* exp(1i * 2 * pi * f / fs * t));Ist = real(Is .* exp(1i * 2 * pi * f / fs * t));这是在下的大作业,新手编程,颇为拙劣,还望海涵。
用MatLab完成三种不同信号的产生、合成或分解,时域波形分析(峰值,峰峰值,有效值,平均值,均方根值等)用MatLab进行三种不同信号频谱分析(可选择功率谱,幅频相频谱,实频虚频)和相关分析(可选择自相关,互相关)%正弦波t=0:0.01:10;y=sin(2*pi*t);subplot(4,1,1) %t图幅分为4行一列,画第一个plot(t,y)title('正弦信号') %标题xlabel('t'); %x轴ylabel('y') %y轴axis([0 11 -1.2 1.2]);%输出坐标范围Fengzhi=max(y)Fengfengzhi=max(y)-min(y)Junzhi=mean(y)Junfangzhi=mean(y.*y)Junfanggen=norm(y)Fs=100;%采样频率N=1024;%采样点数t=0:0.01:10;y=sin(2*pi*t);P=fft(y,N);%进行fft变换Pyy =2*sqrt(P.* conj(P))/N;%求幅值f=linspace(0,Fs/2,N/2);subplot(4,1,2)plot(f,Pyy(1:N/2));%画幅值频域图title('幅频图')xlabel('频率/HZ');ylabel('振幅')pp=angle(P); %相位弧度Pp=180/pi*pp;%弧度变角度subplot(4,1,3)plot(f,Pp(1:N/2));title('B的相频谱');xlabel('频率(Hz)');ylabel('相位(度)');[a,b]=xcorr(y,'unbiased');%进行自相关subplot(4,1,4);plot(b*0.001,a);title('自相关')xlabel('时间/s');%方波t=-5:0.01:5;y=square(2*pi*t,50);%产生方波信号subplot(4,1,1)plot(t,y)title('方波信号')xlabel('t');ylabel('y')axis([-5 5 -1.5 1.5]);Fengzhi=max(y)Fengfengzhi=max(y)-min(y)Junzhi=mean(y)Junfangzhi=mean(y.*y) Junfanggen=norm(y)Fs=100;N=1024;P=fft(y,N);Pyy =2*sqrt(P.* conj(P))/N;f=linspace(0,Fs/2,N/2);subplot(4,1,2)plot(f,Pyy(1:N/2));title('频谱图')xlabel('频率/HZ');ylabel('振幅')pp=angle(P);Pp=180/pi*pp;%弧度变角度subplot(4,1,3)plot(f,Pp(1:N/2));title('相频谱');xlabel('频率(Hz)');ylabel('相位(度)');[a,b]=xcorr(y,'unbiased');subplot(4,1,4);plot(b*0.001,a);title('自相关')xlabel('时间/s');ylabel('R(t)');%三角波t=0:pi/8:10*pi;y=sawtooth(t,0.5);%产生三角波信号plot(t,y);title('三角波信号')xlabel('t');ylabel('y')Fengzhi=max(y) Fengfengzhi=max(y)-min(y) Junzhi=mean(y) Junfangzhi=mean(y.*y) Junfanggen=norm(y)Fs=100;N=1024;P=fft(y,N);Pyy =2*sqrt(P.* conj(P))/N; f=linspace(0,Fs/2,N/2); subplot(4,1,2)plot(f,Pyy(1:N/2));title('幅频图')xlabel('频率/HZ');ylabel('振幅')pp=angle(P);Pp=180/pi*pp;%弧度变角度subplot(4,1,3)plot(f,Pp(1:N/2));title('相频图');xlabel('频率(Hz)');ylabel('相位(度)');[a,b]=xcorr(y,'unbiased'); subplot(4,1,4);plot(b*0.001,a);title('自相关')xlabel('时间/s');ylabel('R(t)');。
实验四:计算抛物面天线增益因子实验目的:1实现数对称振子天线学建模、编程、仿真实现图形可视化。
2通过本实验使学生掌握matlab7.0仿真软件在电磁场编程中的应用。
实验设备:计算机、matlab7.0仿真软件实验内容计算抛物面天线增益因子抛物面天线由馈源和反射面组成。
馈源是放置在抛物面焦点上的具有弱方向性的初级照射器,可以是单个振子或振子阵,单喇叭或多喇叭,开槽天线等;反射面由形状为抛物面的导体表面或导线栅格网构成[28]。
抛物面天线的方向系数可由24D Sv πλ=来计算,其中,v 为面积利用系数;22204tan 2S R f ππψ==,为抛物面的口径面积。
口径截获频率rs A r P P η=(r p 是整个口径面向空间辐射的功率)。
抛物面天线的增益系数2244A G D Sv Sg ππηηλλ===,其中,A g v η=,称为增益因子。
如果馈源也是旋转对称的,可得到其面积利用系数为()()02022tan 22cot2sin F d v Fd ψψψψψψ=ψψψ⎰⎰(ψ为抛物线上任一点到焦点的连线与焦轴Oz 之间的夹角),口径截获频率()()02020sin sin rs A rF d P P F d πηψψψψ==ψψψ⎰⎰程序如下:运行结果如图3.21: clc;clear; global n;nn=[ 2 4 6 8 10];posai00=0:90/20:90;posai0=posai00*pi/180;for ii=1:5;n=nn(ii);for jj=1:length(posai0);g(jj)=2./(tan(posai0(jj)/2)).^2.*(abs(quad('mjlyfz',0,posai0(jj)))).^2./quad('mjlyf m',0,pi/2);end;plot(posai00,g);axis([0 90 0 1]);hold on;end;grid on%计算抛物面天线面积利用系数的分子内的函数function y=mjlyfz(posai);global n;y=(cos(posai)).^(n/2).*tan(posai/2);%计算抛物面天线面积利用系数的分母内的函数function y=mjlyfm(posai);global n;y=(cos(posai)).^n.*sin(posai);图3.21由上图可知,由于面积利用系数、效率、与口径张角之间的变化关系恰好相反,所以存在最佳张角,使得增益因子对应着最大值max 0.83g 。
微波传输线的建模与仿真随着信息通信技术的不断发展,微波通信成为了当今的重要通信方式。
而微波传输线则是微波通信中不可或缺的一部分。
微波传输线广泛应用于通信、雷达、卫星通信等领域中,因其能够在高频率上传输电磁波信号而闻名。
微波传输线的建模与仿真是微波通信领域中一个重要的研究方向。
它是通过模拟和仿真微波传输线的运行机理和性能,来增强对微波传输线的理解和优化设计。
本文将对微波传输线的建模与仿真进行介绍和探讨。
一、微波传输线的类型微波传输线主要包括两种类型:同轴电缆和微带线。
同轴电缆是通过内外两层金属导体分别作为信号传输和屏蔽的传输线。
而微带线则是通过在介质板上进行金属线铺设,形成一个平面波导结构的传输线。
对于同轴电缆和微带线的建模和仿真,采用的方法也不太相同。
同轴电缆可以通过传输线的基本原理和参数来建模。
而微带线则需要考虑板层模型和基模分析等技术。
二、微波传输线的建模微波传输线的建模过程主要有以下几个步骤:1. 确定传输线的基本参数传输线的基本参数包括电阻、电感和电容等。
这些参数可以通过对传输线结构和材料的了解进行计算和估算。
2. 构建传输线模型传输线模型是建模的基础。
可以使用电路模型或者EM模型来描述传输线。
电路模型通常用于低频电路仿真,而EM模型则适用于高频情况。
3. 建立微波传输线的电路仿真模型在建立微波传输线的电路仿真模型时,需要选择合适的仿真工具,并对仿真参数进行设置和调整,以便得到最佳的仿真结果。
4. 仿真结果分析对仿真结果进行分析和评估,以确定传输线的性能和可能存在的问题。
三、微波传输线的仿真在微波传输线的仿真过程中,需要考虑不同传输线对电磁波的传输损耗、回波损耗和常见的干扰等因素。
同时,还需要考虑传输线所处的环境因素对传输线的影响。
对于微波传输线的仿真,可以采用多种工具和算法。
其中,有限元法、时域有限差分法和时域积分方程法等是常见的仿真方法。
四、微波传输线建模与仿真的应用微波传输线建模与仿真技术在实际应用中具有广泛的应用。
在Matlab中实现信号分析和信号处理的方法信号分析和信号处理是数字信号处理领域的核心内容,广泛应用于通信、音频、图像等领域。
Matlab作为一款功能强大的科学计算软件,提供了丰富的工具箱和函数,可以方便地实现信号分析和信号处理的方法。
本文将介绍在Matlab中实现信号分析和信号处理的方法及相关技巧。
一、信号的表示与加载在Matlab中,信号可以以向量的形式表示。
我们可以使用`zeros`、`ones`、`linspace`等函数生成一维向量,并通过对向量元素的赋值来表示信号的幅度。
例如,我们可以使用以下代码生成一个长度为N的单位矩形脉冲信号:```matlabN = 1000; % 信号长度T = 1/N; % 采样间隔t = linspace(0, 1, N); % 生成等间隔时间向量x = zeros(1, N); % 初始化信号向量x(0.2*N:0.8*N) = 1; % 脉冲信号赋值```加载信号是信号分析的第一步,Matlab提供了多种方式加载信号,包括加载本地文件和从外部设备获取实时信号。
加载本地文件需要使用`audioread`函数(适用于音频信号)或`imread`函数(适用于图像信号)。
例如:```matlab% 加载音频信号[y, fs] = audioread('audio.wav');% 加载图像信号I = imread('image.jpg');```二、信号频谱分析频谱分析是对信号频率特性进行分析的方法,常用的频谱分析方法包括傅里叶变换和小波变换。
Matlab提供了`fft`函数和`cwt`函数来实现傅里叶变换和连续小波变换。
傅里叶变换可以将信号从时域转换到频域,显示信号的频率成分。
以下是使用`fft`函数进行傅里叶变换的示例代码:```matlabX = fft(x); % 傅里叶变换f = (0:N-1)/N; % 频率向量figure;plot(f, abs(X)); % 绘制频谱图xlabel('Frequency (Hz)');ylabel('Amplitude');title('Frequency Spectrum');```小波变换是一种时间频率分析方法,可以同时提供信号在时间和频率上的分辨率。
实验二:方向图乘积定理实验实验目的:1实现数对称振子天线学建模、编程、仿真实现图形可视化。
2通过本实验使学生掌握matlab7.0仿真软件在电磁场编程中的应用。
实验设备:计算机、matlab7.0仿真软件实验内容1概述二元阵是指组成天线阵的单元天线只有两个。
方向图乘积定理是指由相似元组成的二元阵,其方向图(或方向函数)等于单元天线的方向图(或方向函数)与与方向图(或阵因子)的乘积,即天线的合成方向函数为()()()1a f f f θϕθϕθϕ=⨯,,,,()1f θϕ,为元因子,它与单元天线的结构及架构方位有关;()a f θϕ,为阵因子,取决于两天线的电流比以及相对位置,与单元天线无关[28]。
【宋铮,张建华,黄冶.天线与电波传播[M] .西安电子科技大学出版社,2003.】 2程序设计clear;clc;sita=meshgrid(0:pi/90:pi);fai=meshgrid(0:2*pi/90:2*pi)';l=0.25; %对称振子的长度d=1.25; %二元阵的间隔距离beta=0; %电流的初始相位差m=1; %电流的振幅比r1=abs(cos(2*pi*l*cos(sita))-cos(2*pi*l))./abs(sin(sita)+eps);r2=sqrt(l+m*m+2*m*cos(beta+2*pi*d*sin(sita).*sin(fai)));r3=r1.*r2;r1max=max(max(r1));r2max=max(max(r2));r3max=max(max(r3));[x1,y1,z1]=sph2cart(fai,pi/2-sita,r1/r1max);[x2,y2,z2]=sph2cart(fai,pi/2-sita,r2/r2max);[x3,y3,z3]=sph2cart(fai,pi/2-sita,r3/r3max);subplot(2,2,1);surf(x1,y1,z1);axis([-1 1 -1 1 -1 1]); shading interp; subplot(2,2,2);surf(x2,y2,z2);axis([-1 1 -1 1 -1 1]); shading interp; subplot(2,2,3);surf(x3,y3,z3);axis([-1 1 -1 1 -1 1]); shading interp; 3仿真图形运行结果如图3.17:图3.17 3结论。
Matlab在微波电路设计中的应用作者:李艳莉来源:《硅谷》2011年第06期摘要:首先介绍Smith圆图在微波电路设计中的重要作用,接着介绍Smith圆图的基本原理,使用Matlab设计Smith圆图的应用软件,并通过实例,针对微波电路设计中的阻抗匹配问题,验证该软件的应用。
关键词: Matlab;Smith圆图;微波电路中图分类号:TN7文献标识码:A文章编号:1671-7597(2011)0320070-020 引言在微波电路的设计过程中,常常会碰到电路的阻抗匹配问题,离不开阻抗和反射系数等参量的计算,含有复数计算,运算十分繁琐和耗时,常用Smith圆图来进行分析,它不仅能避开繁琐的公式及复数运算,使工程设计中相关计算简单便捷,而且图解过程物理概念清晰,所得结果直观形象。
但当圆图的圆周数较多时,常规的图解法由于图线过于密集,圆图计算精度会受到严重影响。
随着计算机仿真技术的飞速发展,通过软件设计Smith圆图,既保留圆图计算简便、直观的固有优点,又能保证设计计算必要的精确度,而且使得设计的过程更加图形化[1]。
Matlab是一种现在被广泛使用的科学仿真软件,具有强大的计算、仿真和图形可视化功能,如果能够把它很好的应用到微波电路设计中,就能有效的减轻电路设计的工作量和提高设计精度。
1 Smith圆图的基本原理和软件设计1.1 Smith圆图的基本原理Smith圆图是 P.H. Smith于1939年在贝尔实验室发明的,它主要用于计算微波网络的阻抗、导纳及网络阻抗匹配设计,还可用于设计微波元器件。
Smith圆图是求解均匀传输线有关阻抗计算和阻抗匹配问题的一类曲线坐标图,图上有两组坐标线,即归一化阻抗或导纳的实部和虚部的等值线簇与反射系数的模和辐角的等值线簇.所有这些等值线都是圆或圆弧,故称其为阻抗圆图或导纳圆图,将它们重叠在一起构成了Smith圆图[2]。
根据传输线理论,负载阻抗为:1.2 基于Matlab的Smith圆图软件设计Matlab软件的函数集丰富且功能强大、良好的用户界面以及许多函数本身会绘制图形且自动选取坐标刻度等显著优点,特别适用大量计算,是Smith圆图软件的理想开发平台[3]。
(一)主程序变量说明:输入变量:zo 传输线特性阻抗zl 传输线终端负载阻抗Er 传输线介电常数f 传输电磁波的频率由输入变量计算得出的变量:w 传输电磁波的数字角频率len 传输电磁波的相波长beita 相移常数gama 传输线个点反射系数复值gamal 传输线终端反射系数的模rou 驻波系数k 行波系数Zi 传输线各点输入阻抗的复值Ui 传输线各点输入电压的复值Uo 传输线各点输出电压的复值Uit 传输线各点输入电压的瞬时值Uot 传输线各点输出电压的瞬时值Ii 传输线各点输入电流的复值Io 传输线各点输出电流的复值Is 传输线各点合成电流的复值Us 传输线各点合成电压的复值Ist 传输线各点合成电流的瞬时值Ust 传输线各点合成电压的瞬时值ph 传输线各点合成电压的相位(二)主程序流程说明:本程序的界面中共有三个输入编辑框,三个输出编辑框和五个波形显示窗口,分别用来输入:传输线特性阻抗Z0、传输线终端负载阻抗Z L、传输的电磁波的频率f、传输线传输介质的相对介电常数εr;输出:传输线的终端反射系数ΓL、行波系数ρ、驻波系数K;具体的程序思路如下:1.由输入编辑框获得用户输入的Z0、Z L、f和εr;2.在“开始”按钮的callback函数中进行运算,并控制各个axis的显示;3.图形的动态显示由一个while循环实现,并由全局标记变量flag控制;4.在“停止”按钮的callback函数中令flag = 1,while循环跳出。
(三)程序运行效果1.行波演示中端接匹配负载zo = zl = 50Ω2.驻波演示1)终端短路zo = 50Ωzl = 02)终端开路zo = 50Ωzl = inf3)终端接纯电抗负载zo = 50Ωzl = X * j3.行驻波演示(四)主程序代码function varargout = StatusAnaly(varargin)%********************************************************%% Copyright (C), 2009-2012,Lyric %% FileName: StatusAnaly.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% STATUSANALY M-file for StatusAnaly.fig% STATUSANALY, by itself, creates a new STATUSANALY or raises the existing% singleton*.%% H = STATUSANALY returns the handle to a new STATUSANALY or the handle to % the existing singleton*.%% STATUSANALY('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in STATUSANALY.M with the given input arguments. %% STATUSANALY('Property','Value',...) creates a new STATUSANALY or raises the % existing singleton*. Starting from the left, property value pairs are% applied to the GUI before StatusAnaly_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to StatusAnaly_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help StatusAnaly% Last Modified by GUIDE v2.5 11-May-2010 14:30:20% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @StatusAnaly_OpeningFcn, ...'gui_OutputFcn', @StatusAnaly_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before StatusAnaly is made visible.function StatusAnaly_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to StatusAnaly (see VARARGIN)% Choose default command line output for StatusAnalyhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes StatusAnaly wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = StatusAnaly_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;function edit_zo_Callback(hObject, eventdata, handles)% hObject handle to edit_zo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_zo as text% str2double(get(hObject,'String')) returns contents of edit_zo as a double% --- Executes during object creation, after setting all properties.function edit_zo_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_zo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_zl_Callback(hObject, eventdata, handles)% hObject handle to edit_zl (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_zl as text% str2double(get(hObject,'String')) returns contents of edit_zl as a double% --- Executes during object creation, after setting all properties.function edit_zl_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_zl (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in btn_begin.function btn_begin_Callback(hObject, eventdata, handles)% hObject handle to btn_begin (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%获得传输线特性阻抗temp = get(handles.edit_zo, 'string');zo = str2num(temp);%获得传输线负载阻抗temp = get(handles.edit_zl, 'string');zl = str2num(temp);%获得传输介质相对介电常数temp = get(handles.edit_Er, 'string');Er = str2num(temp);%获得传输线上传播的电磁波频率temp = get(handles.edit_f, 'string');f = str2num(temp) * 1000000;w = 2 * pi * f;%获得相波长、相位常数len = GetLen(f, Er);L = 2 * len; %横坐标范围L为两倍的相波长beita = GetBeita(f, Er);z = linspace(0, L, 200);zn = z ./ len; %zn为相对于相波长len归一化的横坐标%获得反射系数[gamal, gama] = GetGama(zo, zl, beita, z);set(handles.edit_gama, 'string', num2str(abs(gamal)));%获得驻波系数rou = GetRou(gamal);set(handles.edit_rou, 'string', num2str(rou));%获得行波系数k = 1 / rou;set(handles.edit_k, 'string', num2str(k));t = 0;Ts = 0.06;fs = 4 * f;%标记变量,当flag = 1 时图像停止,当flag = 0 时图像继续运动global flagflag = 0;while flag == 0%获得传输线输入阻抗Zi = GetZi(zo, gama);%绘制传输线输入阻抗plot(handles.axes_zi, zn, abs(Zi));if max(abs(Zi)) > 500limzL = 0;limzH = 500;elseif (max(abs(Zi)) - min(abs(Zi))) < 1limzL = min(abs(Zi)) - 1;limzH = max(abs(Zi)) + 1;elselimzL = min(abs(Zi));limzH = max(abs(Zi));endaxis(handles.axes_zi, [0, max(zn), limzL, limzH]);title(handles.axes_zi, '输入电阻波形');xlabel(handles.axes_zi, 'z(lamda)');ylabel(handles.axes_zi, 'Zin(ohmic)');%获得传输线输入输出电压[Ui, Uo] = GetUio(beita, gama, z);[Uit, Uot] = GetUiot(Ui, Uo, f, t);%绘制传输线输入输出电压plot(handles.axes_u, zn, Uit, 'b', zn, Uot, 'r');axis(handles.axes_u, [0, max(zn), -1, 1]);title(handles.axes_u, '入射和反射电压波形');xlabel(handles.axes_u, 'z(lamda)');ylabel(handles.axes_u, 'Ui/Uo(V)');legend(handles.axes_u, 'Ui', 'Uo', 2);%获得传输线入射和反射电流[Ii, Io] = GetIio(Ui, zo, gama);%获得传输线合成电压、电流[Is, Us] = GetIUs(Ui, Uo, Ii, Io);[Ist, Ust] = GetIUst(Is, Us, f, t);%绘制传输线合成电压、电流plot(handles.axes_us, zn, Ust);limu = 1 + abs(gamal);axis(handles.axes_us, [0, max(zn), -limu, limu]);title(handles.axes_us, '合成电压波形');xlabel(handles.axes_us, 'z(lamda)');ylabel(handles.axes_us, 'Us(V)');plot(handles.axes_is, zn, Ist);limi = (1 + abs(gamal)) / zo;axis(handles.axes_is, [0, max(zn), -limi, limi]);title(handles.axes_is, '合成电流波形');xlabel(handles.axes_is, 'z(lamda)');ylabel(handles.axes_is, 'Is(A)');%获得并绘制电压相位ph = angle(Us .* exp(1i * 2 * pi * f /fs * t));plot(handles.axes_ph, zn, ph / pi);axis(handles.axes_ph, [0, max(zn), -1.1, 1.1]);title(handles.axes_ph, '合成电压相位波形');xlabel(handles.axes_ph, 'z(lamda)');ylabel(handles.axes_ph, 'thita(pi)');t = t + Ts;pause(Ts);end% --- Executes on button press in btn_stop.function btn_stop_Callback(hObject, eventdata, handles)% hObject handle to btn_stop (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global flagflag = 1;function edit_gama_Callback(hObject, eventdata, handles)% hObject handle to edit_gama (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_gama as text% str2double(get(hObject,'String')) returns contents of edit_gama as a double% --- Executes during object creation, after setting all properties.function edit_gama_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_gama (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_rou_Callback(hObject, eventdata, handles)% hObject handle to edit_rou (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_rou as text% str2double(get(hObject,'String')) returns contents of edit_rou as a double% --- Executes during object creation, after setting all properties.function edit_rou_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_rou (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_k_Callback(hObject, eventdata, handles)% hObject handle to edit_k (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_k as text% str2double(get(hObject,'String')) returns contents of edit_k as a double% --- Executes during object creation, after setting all properties.function edit_k_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_k (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_f_Callback(hObject, eventdata, handles)% hObject handle to edit_f (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_f as text% str2double(get(hObject,'String')) returns contents of edit_f as a double% --- Executes during object creation, after setting all properties.function edit_f_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_f (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit_Er_Callback(hObject, eventdata, handles)% hObject handle to edit_Er (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_Er as text% str2double(get(hObject,'String')) returns contents of edit_Er as a double% --- Executes during object creation, after setting all properties.function edit_Er_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_Er (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function axes_u_CreateFcn(hObject, eventdata, handles)% hObject handle to axes_u (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes_u(五)子程序代码(按照在主程序中出现的顺序排列)function Len = GetLen(f, Er)%********************************************************%% Copyright (C), 2009-2012,Lyric %% FileName: GetLen.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetLen% Description: 获得传输线上所传输的电磁波的相波长% Called By: StatusAnaly.m% Input: f 传输线中所传输电磁波的频率% Er 传输线中传输介质的相对介电常数% Return: Len 传输线中所传电磁波的相波长C = 300000000;Len = C / f / sqrt(Er);function Beita = GetBeita(f, Er)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetBeita.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetBeita% Description: get the phase-shift constant 获得相移常数% Called By: StatusAnaly.m% Input: f the freqency of the wave propagated in the medium % Er the relative permittivity of the medium% Return: Beita the phase-shift constant of the wavepi = 3.1415926;%真空中的电磁波速度,单位:m/sC=300000000;%数字角频率W = 2 * pi * f;Beita = W * sqrt(Er) / C;function [GamaL, Gama] = GetGama(zo, zl, beita, z)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetGama.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetGama% Description: get the reflection coefficient 获得反射系数% Called By: StatusAnaly.m% Input: zo the characteristic impedance of the transmission line % zl the load impedance of the transmission line% beita the phase-shift constant of the transmission line% z 相对于相波长归一化的横坐标% Return: GamaL 反射系数的模值% Gama 反射系数的复值if zl == infGamaL = 1;elseGamaL = (zl - zo) / (zl + zo);endGama = abs(GamaL) .* exp(-1i * 2 .* beita .* z);function Rou = GetRou(gamal)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetRou.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetRou% Description: 获得传输线上的驻波系数% Called By: StatusAnaly.m% Input: gamal 传输线上的反射系数% Return: Rou 传输线上的驻波系数Gamal = abs(gamal);Rou = (1 + Gamal) / (1 - Gamal);function Zi = GetZi(zo, gama)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetZi.m % % Author: Lyric % % Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetZi% Description: 获得传输线上各点输入阻抗的复值% Called By: StatusAnaly.m% Input: zo 传输线的特性阻抗% gama 传输线上反射系数的复值% Return: Zi 传输线上各点输入阻抗的复值Zi = zo .* ((1 + gama) ./ (1 - gama));function [Ui, Uo] = GetUio(beita, gama, z)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetUio.m % % Author: Lyric % % Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetUio% Description: 获得输入输出电压的复值% Called By: StatusAnaly.m% Input: beita 传输线上电磁波的相移常数% gama 传输线上电磁波的反射系数% z 相对于相波长归一化的横坐标% Return: Ui 输入电压复值% Uo 输出电压复值% 假定输入电压模值为1U = 1;Ui = U * exp(1i * beita * z);Uo = Ui .* gama;function [Uit, Uot] = GetUiot(Ui, Uo, f, t)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetUiot.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetUiot% Description: 获得输入输出电压瞬时值% Called By: StatusAnaly.m% Input: Ui 输入电压复值% Uo 输出电压复值% f 传输线上所传的电磁波的频率% t 当前时刻% Return: Uit 输入电压瞬时值% Uot 输出电压瞬时值%获得输入输出电压瞬时值fs = 4 * f;Uit = real(Ui .* exp(1i * 2 * pi * f / fs * t));Uot = real(Uo .* exp(1i * 2 * pi * f / fs * t));function [Ii, Io] = GetIio(Ui, zo, gama)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetIio.m %% Author: Lyric % % Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetIio% Description: 获得输入和输出电流的复值% Called By: StatusAnaly.m% Input: Ui 输入电压的复值% zo 传输线特征阻抗% gama 反射系数复值% Return: Ii 输入电流复值% Io 输出电流复值%获得输入输出电流复值Ii = Ui / zo;Io = - Ii .* gama;function [Is, Us] = GetIUs(Ui, Uo, Ii, Io)%********************************************************% % Copyright (C), 2009-2012,Lyric %% FileName: GetIUs.m % % Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 % %********************************************************%% Function: GetIUs% Description: 获得合成电压电流复值% Called By: StatusAnaly.m% Input: Ui 输入电压复值% Uo 输出电压复值% Ii 输入电流复值% Io 输出电流复值% Return: Is 合成电流复值% Us 合成电压复值%获得合成电压电流复值%I2 = 1;%U2 = Zl * I2;%Us = U2 * cos(beita .* z) + 1i * Zo * I2 * sin(beita .* z);%Is = 1i * U2 /Zo * sin(beita .* z) + I2 * cos(beita .* z);Us = Ui + Uo;Is = Ii + Io;function [Ist, Ust] = GetIUst(Is, Us, f, t)%********************************************************%% Copyright (C), 2009-2012,Lyric %% FileName: GetIUst.m %% Author: Lyric %% Version: 1.0 %% Date: 2010-05-11 %%********************************************************%% Function: GetIUst% Description: 获得合成电压电流瞬时值% Called By: StatusAnaly.m% Input: Is 合成电流复值% Us 合成电压复值% f 电磁波频率% t 当前时间% Return: Ist 合成电流瞬时值% Ust 合成电压瞬时值%获得合成电压电流瞬时值fs = 4 * f;Ust = real(Us .* exp(1i * 2 * pi * f / fs * t));Ist = real(Is .* exp(1i * 2 * pi * f / fs * t));这是在下的大作业,新手编程,颇为拙劣,还望海涵。