2MATLAB简单程序设计

时间:2019-05-12 04:05:28下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《2MATLAB简单程序设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《2MATLAB简单程序设计》。

第一篇:2MATLAB简单程序设计

MATLAB语言基础实习指导

实习二

MATLAB简单程序设计

目的:通过实习MATLAB简单程序设计,能够编写简单MATLAB程序,为编写结构较为复杂的M文件做准备。

要求:掌握MATLAB变量命名规则,算术运算符,关系运算符,逻辑运算符以及特殊运算符,掌握脚本M文件和函数M文件的编写,掌握结构化程序设计。

一、MATLAB运算符 1. 算术运算附

包括普通运算符(+、-、*、/、^)和数组运算符(.*、.、./、.^),请回顾并掌握。2. 关系运算附 大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(~=)。3. 逻辑运算附 逻辑与(&)、逻辑或(|)、逻辑异或(xor)、逻辑非(~)。4. 特殊运算附

冒号运算符(:)与句点(.)。以上内容请参考课件。

二、M文件的编写 1. 脚本M文件

只包括一些可执行命令行,是Matlab表达式的集合,不可以接受参数。

比如新建一个文件名为cal.m的M文件,一种方法是在MATLAB的command window中输入:

>>edit cal.m 这时,就会打开MATLAB的M文件编辑器——M Editor,在窗口中输入M文件的内容,然后保存就会在当前目录下生成一个文件名为cal.m的M文件。请回忆另外两种M文件的创建方式。如把以下内容输入到cal.m中,这个M文件就是一个脚本M文件。

%this is a script M file example!clc;clear x=[4 6 5;8 2 3;7 1 9];y=x’;z=inv(x);a1=x*y,a2=x.*y b1=x/y,b2=x./y,b3=x.y 注意上面‘%’号的作用,M文件的文件名命名规则与变量相同,而且文件名不能和MATLAB函数名相同。2. 函数M文件

函数M文件是另一类M文件,用户可以根据需要编写自己的M文件,它们可以像库函数一样方便地调用。函数M文件的第一行有特殊的要求,必须遵循如下的形式:

Function<因变量>=<函数名>(<自变量>)

如果用户建立起许多M函数文件,则可以最终形成独立的用户自己的工具箱(1)单一因变量的函数M文件 新建一个M文件,输入以下内容:

% This is a function M file example function myabs=absolute(a)if a>0

myabs=a;else

myabs=-a;end 然后把M文件保存为absolute.m,在MATLAB的command window中输入: >>absolute(-5)就能调用。而不能像脚本M文件那样直接运行,因为函数M文件需要有输入参数。但是,这个M文件只能对标量求绝对值,而不能对矩阵求绝对值,请编写一个M文件,使其能对矩阵的各个元素求绝对值(提示:用size函数得到输入矩阵的行数和列数,使用嵌套for循环对矩阵的每个元素进行判断)。(2)多因变量的函数M文件

由于MATLAB的运算是矩阵运算,很多情况下,调用函数后需要返回多个值。

% This is a function M file example function [summ,mean,stdev]=stat(x)[m n]=size(x);if m==1

m=n;%if x is an array end summ=sum(x);mean=sum(x)/m;stdev=sqrt(sum(x.^2)/m-mean.^2);同样,新建一个文件名为stat.m的M文件,输入以上内容,就能调用: >>[a,b,c]=stat([1,2,3;4,5,6;10,2,8])

三、MATLAB结构化程序设计 1. if-else-end结构 2. while-end结构 3. for-end结构

4. switch-case-end结构

以上几种结构的表述与实例参见课件。

实习二作业:

1. 请编写一个函数M文件,使其能对矩阵的各个元素求绝对值,要求用2种循环实现(for循环和while循环)。提示:用size函数得到输入矩阵的行数和列数,使用嵌套for循环(while循环)对矩阵的每个元素进行判断。

2. 对课件3中的switch-case-end结构用if-elseif-else-end结构改写,实现相同功能。

3. 编制一个程序,该程序将接受用户输入的任何字符串,并查找在这个字符串中某个指定字符的出现次数。提示:用findstr函数和length函数。

答题要求:

一、独立完成以上各题,一旦发现抄袭行为,该次作业记零分。

二、作业请手写,一律不收打印稿。

三、上交时间:下一次课课前。

第二篇:MATLAB程序设计教学大纲

《MATLAB程序设计教学大纲》

课程代码:1010330 实验教学:24学时+16学时 课程学分:2.5 先修课程:C/C++程序设计语言或VB程序设计语言  课程的性质和教学目标

《MATLAB程序设计》是工科大学非计算机类理、工、管理专业学生的一门计算机必修基础课。MATLAB 作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境。本课程注重实际能力的培养,使学生能够运用MATLAB进行一般的工程计算,掌握MATLAB的基本技术。

二、教学要求:

课程的指导思想是“学以致用”,课程知识点系统全面,能锻炼学生的动手能力。课堂教学讲述了MATLAB基本技术,包括基本计算、矩阵处理、符号运算、计算结果可视化等,结合实际问题,探索 “理论结合实践”的教学模式,注重精讲多练,培养学生利用MATLAB解决专业实际工程问题的能力。课堂教学覆盖不到之处通过实验课让学生在实践中学习,力求实现“教学与自学相结合”的教学原则,重视创新能力和综合能力的培养。

三、教学内容

第一章 MATLAB课程概述()

1.MATLAB开发环境介绍 2.MATLAB环境设置和路径设置 3.MATLAB的安装与激活 第二章 MATLAB程序设计基础()1.常量与变量的使用方法; 2.数组的创建和使用方法; 3.各种运算符的使用方法;

4.函数文件的创立和使用:m文件的创建和调用方法; 5.三种控制结构(顺序结构、分支结构和循环结构)6.调试技巧

第三章 MATLAB数值计算()

1.矩阵运算(矩阵的构造,矩阵的基本运算和高级运算)2.多项式运算(多项式的构造和运算)3.其他数值计算

4.数据处理(数据插值和曲线拟合)第四章 MATLAB符号计算 1.符号定义

2.符号运算(初等代数运算,复合函数,反函数,极限,泰勒展开,级数求和,符号微分,符号积分等)第五章 图形处理 1.2D图形处理 2.3D图形处理 3.声音与动画的实现 第六章 图形用户界面编程简介 第七章 工具箱的使用介绍

四、教材与参考书

教材:《MATLAB基础教程》(2011年第一版)清华大学出版社

丛书名

第三篇:matlab程序设计及心得体会

1.编写程序,建立向量n=〔1,2,3,4,5〕,并利用n产生下列向量:(1)2 , 4 , 6 , 8 , 10

(2)1/2 , 1 , 3/2 , 2 , 5/2(3)1, 1/2 , 1/3 , 1/4 , 1/5

(4)1 , 1/4 , 1/9, 1/16, 1/25。

注意:向量n=1:5,/是传统意义上的矩阵的除法,而./是两个矩阵的对应元素相除,同理相乘。此处是对应元素相除,所以一定要记住应该用点除,而非除法。2.从键盘输入一个三位数,将它反向输出。例如输入639,输出为936。

注意:输出函数:disp(),取整用fix(),取余函数mod(x,y)与rem(x,y)一样。3.输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。

要求:(1)分别用if语句和switch语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。注意:switch语句中的case最好用0~9的数字表示而不是表达式!不可用break!后不可用表达式!!为了表示另一种情况,记住用if与其搭配~不要太死板,学会灵活。4.建立5*6的矩阵,要求输出矩阵第n行元素。当n的值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并給出出错信息。

注意:随机产生一个0~1矩阵可以用rand函数,整数矩阵便用fix(100*rand(m,n))函数。产生m*n 阶[a,b]均匀分布U(a,b)的随机数矩阵:

unifrnd(a,b,m, n)

5.产生20个两位随机整数,输出其中小于平均值的偶数。

注意:fix(100*rand(m,n))与round(100*rand(m,n))几乎一样的,随机产生m*n阶矩阵,学会变通,随机产生两位随机整数。fix是指向0靠拢取整。fix(3.7)=3,fix(-3.7)=-3。floor指向下取整,ceil指向上取整。round指四舍五入取整!round最常用~记住a=o指赋值,而a==0指判断,与c语言一样~当矩阵只有一行时,可用a(i)表示每一个数。用k(i)表示来输出每一个数!表示矩阵中的每一列时用a(:,i),表每一行时用a(i,:)。

6.输入20个数,求其中的最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。注意:熟记其中的函数将对编程的速度有很大的提高!孩子,加油!

e0.3ae0.3a0.3asin(a0.3)ln7.y,当a取-30.,-2.9,……,2.9,3.0时,求各点22的函数值。要求分别用顺序结构和循环结构实现。

注意:用size返回向量元素的个数,如果是矩阵,size(a,2)指返回矩阵的竖的个数,即多少列。其中一维是指行,二维指列。记住表示一个向量时,步长放中间。!

8.当n分别取100、1000、10000时,求下列各式的值:(要求分别用循环结构和向量运算(使用sum函数)来实现)

1111 2222123n111(2)1

3571111(3)n

416644(1)

2n2n224466(4)注意:使用while循环时,注意对n初始化,1335572n12n1与c语言较象。普通指数时直接用^,自然指数时,若x已知,用y=exp(x)。

9.若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如:2*3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求〔2,50〕区间内,(1)亲密数对的对数;

(2)与上述亲密数对对应的所有亲密素数之和。

注意:x=primes(n)输出不超过n整数的素数,a=length(x)表示输出素数的个数。用b=isprime(n)来判断n是否为素数,若为素数则b=1,反之为0。学会变通,求和用if循环就好。

111110.根据1,求:

3572n1(1)y<3时的最大n值;(2)与(1)的n值对应的y值。

注意:不能被题目吓跑~~·很简单的,耶耶!

11.已知yf(40)

f(30)f(20)(1)当f(n)=n+10ln(n2+5)时,y的值是多少?

(2)当f(n)=1*2+2*3+3*4+……+n*(n+1)时,y的值是多少?

12.编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用该函数。13.定义一个函数文件,求給定复数的指数、对数、正弦、余弦,并在命令文件中调用该函数文件。

14.先用函数的递归调用定义一个函数文件求1005010i,然后调用该函数文件求

i1n1zhuyi:yaoxunzaoyigehanshubiannnengjiejue defangfa~~ kkkk1k1k1215.写出下列程序的输出结果。(1)

s=0;a=[12 13 14;15 16 17;18 19 20;21 22 23];for k=a

for j=1:4

if rem(k(j),2)~=0

s=s+k(j);

end

end end s

(2)命令文件 global x x=1:2:5;y=2:2:6;sub(y);x y 函数文件sub.m function fun=sub(z)global x z=3*x;x=x+z;16已知:1111n11,编程求的近似值。

43572n1 注意:在编程过程中,一个小小的乘号将导致很难查出错误,很会影响心情,所以不能忽略小问题,必须仔细小心!

1517.输入下面的矩阵,A913234678101112141516求该矩阵的对角线元素之和,并找出最大和最小的元素的值以及其所在的行、列号。将最大值替换成inf,最小值替换成-inf。注意:①找出矩阵中具体某个元素的具体位置的方法: ind=find(a==max)siz=[4,4]

[I,J] = ind2sub(siz,ind)便可以找到最大元素的位置![I1,I2,I3,...,In] = ind2sub(siz,ind)②对角线元素用diag函数~~ ③要找出一个很大矩阵的最大最小元素用两个for循环。!加油~写出这道题好兴奋啊,这种感觉真好!

18.求解猴子吃桃问题。猴子在第一天摘下若干个桃子,当即吃了一半,又感觉不过瘾,于是就多吃了一个。以后每天如此,到第10天再想吃时,却发现就只剩一个桃子。请编程计算第一天猴子摘的桃子个数。

注意:不要被问题吓到,很简单的一个问题罢了~当顺着不行时,试着倒着来解答编程。19.求n阶勒让德多项式的值,其递归公式为:

p(n,x)((2*n1)*x*p(n1,x)(n1)*p(n2,x))/n

p(0,x)1;p(1,x)x注意;它要的仅仅只是一个定义函数~并没有需要一个确切的值。20.利用恒等式26k11计算圆周率的近似值。k2注意:sqrtm(a):矩阵a开平方根;sqrt(a):矩阵a对应的元素开平方根。

21.输入一个正整数,如果它是偶数就除以2,是奇数就乘以3加上1,如此一直变化,直到最后变成1。

注意:判断一个数是否为整数可以用判断语句a==round(a)!在matlab中,用~=表示不等于,与c语言不同。22.(1)用递归调用求Fibonacci数列定义如下: f1=f2=1 , f(n+1)=f(n)+f(n-1)。

(2)求Fibonacci数列大于4000的最小项。

注意:这道题目很简单,却花了很长的时间~·主要是题目意思没弄清便动笔,要学会分清题意,冷静分析。另外还要注意while的条件,1便执行,0则跳出~。

23.列出所有的水仙花数。水仙花数是一个三位数,其各位数字的立方和等于该书本身。例如:153=13+53+33 注意:当输出的不仅仅是一个数时,需要定义一个数组a(i),i=i+1,输出为a。if语句中,判断条件中为==,而不是赋值语句=!!别总犯相同的错误~~·

24.试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。如N=5,原来x为:而经过颠倒处理后x中数据的次序应该为:x=[ 9 7 5 3 1 ]

25.已知某班的5名学生的三门课成绩列表如下:

学生序号1 2 3 4 5 高等数学78 89 64 73 68 外语83 77 80 78 70 MATLAB语言82 91 78 82 68 试写出有关命令,先分别找出三门课的最高分及其学生序号;然后找出三门课总分的最高分及其学生序号。针对上述的成绩表,求出其三门课总分存入数组ZF,再利用SORT命令对之按降序排序,同时把相应的学生序号存入数组XH。

第四篇:Matlab交互式程序设计教程及举例

Matlab交互式程序设计教程及举例

一、创建GUI(Graphics User Interface)新文件和编辑已经存在的GUI文件

1、在matlab命令窗口中键入guide,弹出如下的对话框:

这是一个双页面对话框,分别用于创建新文件和打开已存在的GUI文件,鼠标点击相应的标题即可切换。

2、图中可见“创建新的GUI”有四种模版选项,不管其它几个,点选第一项,按“OK‘按钮可打开如图所示的GUI编辑器

其中左边是控件工具栏,用户可根据自己的程序将所需要的控件用鼠标拖至右侧的编辑区域进行布局。(用户可将鼠标悬停在各个控件图表上查看各个对象的名称)菜单栏下边是工具条,其中常用的有“”(保存当前GUI文件和相应的m文件)、“

”(编写相应协调运行的m文件、“”(编辑当前控件的相应属性)、“”(创建和修改用户自己的程序菜单)、“”(保存当前文件并运行改程序)。右下方主要区域是程序的界面布局窗口(灰色网格区域是布局区域,用户可根据程序需要用鼠标拖动该区域的右下角调整该区域的大小)。

3、此时可以按下“”图标保存该文件(自然此时程序没有任何功能,只有一个主框架),弹出文件保存对话框,在文件名处输入一个文件名(英文字母开头),如“my1”等,扩展名自动设置为“.fig”。系统除了保存当前的界面文件外,还自动生成一个与该界面一起协调运行的“my1.m”文件,并在m文件编辑窗口中打开它。

4、浏览一下该文件,可以看到该文件中目前自动创建了3个函数: function varargout = my1(varargin)function my1_OpeningFcn(hObject, eventdata, handles, varargin)function varargout = my1_OutputFcn(hObject, eventdata, handles)这些函数声明和参数在后续的程序设计中不要做任何修改,切记!!

对我们目前的应用来说第一个函数和第三个函数的程序体也不要做任何修改。根据自己的程序涉及需要只需修改第二个函数的程序体部分。(具体的修改方式可以通过我的例子程序加以体会。)

注意第二个函数程序体的最后一条语句 guidata(hObject, handles);该语句在后续的程序设计中将会频繁使用,现在请先记住它。

5、祝贺你!你现在已经有了一个名为“my1.m”和“my1.fig”的可以运行的文件了!

现在可以在matlab命令窗口中键入“my1”运行改程序,自然,除了显示一个标题为“my1”的空白窗口外,你还不能进行任何交互式控制操作(自然除了关闭该窗口外),因为你还没有写任何控制程序和添加任何控件。

二、增加控件及编写相应的执行程序

1、现在可以编辑运行窗口的标题栏——即将“my1”修改为自己希望的标题,本例中我改为“参数a,b,n对r=acos(nt+b)的影响”。在GUI设计窗口中点击“

”工具条图标,弹出如下的“属性编辑框”

该窗口对于后续设计中的每个控件都可以打开(通过点击“”工具条图标),它共有2列,左列是当前对象的用户可以修改的属性名(按首字母顺序排列),右列是每个属性的可以编辑的属性值,现在在左列找到“name”一项,将右侧的自动生成的“my1”改为“参数a,b,n对r=acos(nt+b)的影响”。关闭此窗口,点击“”以保存当前修改并运行程序。OK!窗口的标题栏已经变成了“参数a,b,n对r=acos(nt+b)的影响”。

2、现在开始程序的布局及控制设计,先从最简单的一个控制按钮开始。

拖动GUI设计窗口左侧的“Push Button”控件至右侧设计区域中的自己希望的位置,放开鼠标,然后可以点选并拖动该控件的右下角改变该控件的大小,则界面中的第一个控件就绪。目前可以点击“”以保存当前修改并运行程序。发生了什么事情?运行窗口的响应位置处有了这个交互式控制按钮!点击这个按钮,除了按钮自动界面上有个形象的动态响应外,不会有任何响应,因为目前我们还没有编写任何控制程序。

3、现在我们开始编写该控制程序。点击“”工具栏图标,打开m文件编辑器,浏览相应的文件,会发现文件末尾多了一个函数头:

function pushbutton1_Callback(hObject, eventdata, handles)这是系统自动生成的相应按钮控件的回调函数,系统自动将其命名为pushbutton1,其中pushbutton代表该控件的类别是“Push Button”,后面的阿拉伯数字代表这是用户在界面设计中所创建的第几个(该控件名称用户可以进行修改,具体修改方法见下一条说明)。现在用户可以在该函数头下边填写相应的自己所希望的控制程序。

目前我们只希望用户点击按钮时进行一个简单的操作:结束当前程序并关闭该窗口。这只需如下的一条语句即可:(将之写在该函数头的下面)close;保存修改后的m文件,回到GUI设计窗口,再次点击“”运行程序,然后在运行后的窗口中点击该按钮。哈哈!如我所愿,程序安全退出了!So Easy!!

4、下面我们可以调整该按钮的界面显示和将自动生成的“pushbutton1”名称改为自己容易记住的个性化名字。

在GUI设计窗口中点击此按钮,然后点击工具条上的“”工具条图标,弹出相应的“属性编辑框”已调整它的名称和运行时的界面属性(任选)。本例中我的调整如下:(1)找到“tag”属性,将其后的“pushbutton1”改为“jieshu”;(此时如果保存修改,然后进入相应的m文件编辑窗口,可以惊喜地看到其中的最后一个函数也进行了相应的修改:(将函数头中的“pushbutton1”变成了“jieshu”)function jieshu_Callback(hObject, eventdata, handles)% hObject handle to jieshu(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)

% Hints: get(hObject,'Value')returns position of slider % get(hObject,'Min')and get(hObject,'Max')to determine range of slider %---Executes during object creation, after setting all properties.function slider1_CreateFcn(hObject, eventdata, handles)% hObject handle to slider1(see GCBO)% eventdata reservedhandles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default.See ISPC and COMPUTER.usewhitebg = 1;if usewhitebg set(hObject,'BackgroundColor',[.9.9.9]);else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end

%---Executes on slider movement.function slider2_Callback(hObject, eventdata, handles)% hObject handle to slider2(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles empty-handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default.See ISPC and COMPUTER.usewhitebg = 1;if usewhitebg set(hObject,'BackgroundColor',[.9.9.9]);else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end 其中的两个_CreateFcn我们后续不需任何操作,所以也不需要任何修改,现在先记住我们需要对于两个_Callback函数进行程序的填写操作,以响应当程序执行时当用户拖动滚动条时应该引起何种响应,具体的响应程序也在后续填写,现在先在GUI界面中修改其属性值。选中“Slider1”,打开相应的属性编辑器,找到其中的“Max”一栏,将后面的内容改为“8”(本例我的“a”值最大值为8),找到其中的“Min”一栏,将后面的内容改为“1”(本例我的“a”值最小值为1),找到“Value”一栏,点击后面的图标,在弹出的对话框中将“0.0”改为“5”,以指定在程序进行运行时将该滚动条的值设置为5。此时可以运行程序,观察第一个滚动条中的滑块位置应该在中间偏右的位置,这说明上述设定已经成功。

“Slider2”我在这里先不做调整,系统自动默认最小值为0,最大值为1,当前值为0,逻辑上本例的“b”值应该在0与2π之间,作为示例,我在后续的程序书写中将获得的该滚动条上的当前值乘以2π来进行相应的调整。

作为示例,我对于本程序中参数n用一个“Edit Text”进行程序运行中的输入控制,所以在界面上再产生一个“Edit Text”,系统自动将其“Tag”设置为“edit1”,我对此不作修改,只是将其“FontSize”属性调整为“16”,将‘String’属性改为“1”。此时检查m文件,可以观察到系统又自动创建了2个函数:

function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)同样其中的edit1_CreateFcn我们也不要进行任何改动,目前先记住日后在edit1_Callback中编写程序以响应用户在程序运行时响应的输入即可。

到此,本示例程序的控制对象和2个绘图区域已经完全建立完毕,目前我安排的界面如图所示。

8、下面再进行一些程序界面的辅助工作,用“Static Text”控件对界面增加一些说明,以增加界面的友好性。

在第一个图形窗口上方的空隙中放置一个“Static Text”,将“String”改为“参数a,b,n对r=acos(nt+b)的影响”,按自己的意愿设置好位置,颜色,字体大小,字体名称等属性值,具体设置详细大家可以通过属性编辑器窗口查看。

在两个滚动条和编辑框的左侧依次放置3个“Static Text”,分别用于说明后续的3个控件分别用于控制哪个参数,为此,将它们的“String”属性分别设置为“a”、“b”、“n”,大小和颜色等外观形象进行适当的调整。

在第一个滚动条下的左右两端各放置一个“Static Text”,分别用于说明该滚动条的最大值和最小值,为此将它们的“String”属性分别设置为“1”、“8”;在第二个滚动条下的左右两端各放置一个“Static Text”,分别用于说明该滚动条的最大值和最小值,为此将它们的“String”属性分别设置为“0”、“2π”。

最后,在两个滚动条下方中部分别放置一个“Static Text”对象,分别用于实时显示对应的滚动条在程序运行时被用户拉动时当前的具体数值,所以其“String”属性值将来在程序中即时获取,因此在目前设计阶段不进行调整,但为了避免混淆,将二者的“Tag”属性分别修改为“texta”和“textb”以便于进行程序控制,具体实现方式参见后续程序的编写。这样设计完成时得到的界面如下图。

三、完整程序的编写。

目前本例所希望的界面布局已经全部完成(除菜单外,此功能后续介绍),现在开始程序的编写工作,写具体的程序前,必须来了解matlab的各function(函数)间的数据传输机制。我们先来考察一下已经完成的m文件,在目前系统自动生成的所有function中,除第一个(相当于C语言中的main函数)外,其它的所有函数的输入参数中都有一个名为handles的变量,这是matlab为GUI程序开发者提供的一个数据结构,用于各个函数之间的数据传输,handles是结构名,程序中的每个各function间的数据都必须以handles.***的形式存在,才能实现各协调工作的各函数之间的数据传输,目前当我们完成设计后,我们已经有了一批形如handles.***的变量,如在添加了第一个显示为“结 束”的按钮并将其“Tag”属性值设置为“jieshu”后系统已经自动地为程序开发者创建了名为handles.jieshu的变量,如果我们在程序中希望访问这个按钮对象,我们就可通过这个handles.jieshu变量找到它,具体的访问程序编写后续写程序时不难学会。接着我们创建“Tag”属性分别为“help”和“jump”第二个、第三个按钮时,系统马上为我们也创建了相应的两个变量handles.help和handles.jump。接着我们建立两个图形窗口时,系统也依次建立了handles.axe1和handles.axes2两个变量用于程序中访问这两个图形窗口,在设置好两个滚动条后,系统也立即建立了handles.slider1和handles.slider2两个变量,然后再建立滚动条下面的编辑框时也建立了handles.edit1变量。现在相信你明白“Tag”属性值的作用了吧?该属性值是什么,系统就在其前加上handles.而产生可以访问该控件的一个变量,所以界面设计阶段如果自己想修改“Tag”属性值,必须保证和其它的不能相同,且符合matlab变量的命名规则——必须英文字母开头,由字母数字和下划线组成。接着我们在界面上布置的每个“Static Text”(静态文本)都依次产生一个前缀为handels.的与相应的“Tag”属性一样的变量,本例程序中我们所设置的那些静态文本变量除最后2个外(即分别位于两个滚动条下方中间的文本框)都不需要进行控制,所以不用理睬它们,只需记住最后两个变量名分别是handles.texta和handles.textb,(它们的“Tag”属性在设计阶段我们分别已经改为了texta 和textb。

除了上述的在界面设计阶段所自动建立的前缀为handles.的变量外,如果在每个函数中还需要创建新的变量,并希望这些变量值能为其它function共享,那么在定义新变量时一定也要建立形如handles.***的变量,如本例程序中我们要用到的handles.a,handles.b,handles.hh,handles.linewidth等。

明白了数据变量命名机制后,我们现在开始完善我们本例的程序编写。

1、填写系统已经生成的my1_OpeningFcn函数

在m文件中找到函数:

function my1_OpeningFcn(hObject, eventdata, handles, varargin)该函数名称“_”前的名字与创建GUI时保存的文件名相同,“_”后的“OpeningFcn”由系统自动生成,是固定不变的,开发者也不可进行修改,该函数用于执行用户所希望的程序运行时的matlab语句。本例中我希望获取在设计阶段中两个滚动条中设置好的当前值作为函数r=acos(nt+b)中的a,b,n的值在左边大图像窗口中绘制该函数的图像,并作为花絮在第二个图像窗口中显示名为“dance_29.gif”的图像文件(该文件存放在当前目录下)。

目前的该函数文件系统已经自动生成了两条语句 % Choose default command line output for my1 handles.output = hObject;

% Update handles structure guidata(hObject, handles);不要修改它们,在两行语句之间插入自己的语句。本例中我所键入的语句和简单功能说明如下:

handles.linewidth=2;%定义画图的线宽 handles.color='b';%定义画图的颜色 handles.a=get(handles.slider1,'value');%获取第一个滚动条当前值,并将其赋给变量handles.a %注意此句的语法,get(界面中的控件名称,’所希望获取的属性名’ %还记得吗?我们在设计阶段该控件的’value’已经设置为5 %所以此句执行后handles.a=5 handles.b=2*pi*get(handles.slider2,'value');%原理与语法上句相同,稍有差异的是我们在设计阶段此控件的最小值和最大值 %分别设置为0和1,即用户在拉动滚动条时此值介于0和1之间

%而我们希望该函数中b值的变化在0和2*pi之间,所以对获得的滚动条的值 %乘以2*pi以达到我们的要求,不过在设计阶段该值为0,所以此句执行后 % handles.b=0 handles.n=str2double(get(handles.edit1,'string'));%原理和前句相同,获取handles.edit1的字符串内容,设计阶段设置为5 %但其数据类型为字符串,所以用str2double函数转化为浮点数赋值给handles.n handles.t=linspace(0,2*pi,1000);%对极坐标函数r=acos(nt+b)中的自变量t进行采点,0和2*pi之间等间距采 %1000个点(呵呵,数目显得比较多,辛苦计算机了)r=handles.a*cos(handles.b+handles.n*handles.t);% 对函数r=acos(nt+b)由获取的常数a,b,n计算对应t的1000个点处的函数值 %注意此时的变量r我没有加前缀handles.,因为此变量仅仅在该函数内部使用 %不需要其它函数共享,所以我们可以不把它放在handles结构中 [x,y]=pol2cart(handles.t,r);%本来可以直接用polar函数画该函数的图像,但实验一中的实验大家也看到了会

%出现极坐标网格线,我希望不要它们,所以用pol2cart将这组极坐标数据转化为直角 %坐标,后面用plot函数在直角坐标系下画出等效的图像

%同样变量x,y仅仅用于本函数,所以也不需要加上handles.前缀 axes(handles.axes1);%用axes函数通知系统执行后续画图操作在名为handles.axes1的图形窗口内 %(即在设计时建立的左边较大的图形窗口内画图)

handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);%用plot函数画由变量handles.linewidth指定线宽的图像,目前其值为2 %注意该操作返回一个图像指针值,将其值赋给变量handles.hh,用于其它函数操作 axis([-8.1 8.1-8.1 8.1]);%调整显示窗口坐标范围 axes(handles.axes2);%用axes函数通知系统执行后续画图操作在名为handles.axes2的图形窗口内 %(即在设计时建立的右边较大的图形窗口内画图)

[handles.m1,handles.map1]=imread('dance_29.gif',1:10);%用imread函数读取图像文件dance_29.gif中的数据放入handles.m1(4维矩阵)%彩色图像的颜色索引表放入handles.map1变量中

%相应的语法和逻辑较为复杂,如果大家有兴趣,可查阅matlab帮助系统中的 %image processing toolbox(图像处理工具箱)中的内容

%为与后面的语句相结合,大家形式上这样理解:图像文件dance_29.gif作为一个 %动态图像文件,里面包含了10张静态文件(当连续播放时可产生动画效果)

%现在数据经上条语句放在了4维矩阵(试着想象一下该矩阵的组成)handles.m1中 %其中三维子阵handles.m1(:,:,:,1)放置第一张图片信息,„„,三维子阵 %handles.m1(:,:,:,10)中依次防止了10幅其中的静态图片文件 imshow(handles.m1(:,:,:,1),handles.map1);%用imshow函数将上述的第一幅图像显示在当前的图形窗口内 axes(handles.axes1);%由于本程序运行的后续大部分操作都在第一个图形窗口内,所以执行该语句通知系统 %此后再出现的绘图命令都放在第一个图形窗口内,即handles.axes1中。保存文件,此时运行程序,结果如下图所示。

左边图形窗口中显示的是a=5,b=0,n=1时极坐标函数r=acos(nt+b)的图像,右边图形窗口中是脑白金老太婆跳舞时的一个瞬间定格画面。

现在不难注意程序运行窗口中的一点令人不舒服的地方:两个滚动条下方的中央位置处还没有满足我们的要求——显示当前滚动条所处位置之值。那么我们继续回到m文件的这个函数中,在刚刚完成的语句后继续实现该功能:

set(handles.texta,'string',num2str(handles.a));%逻辑上该函数(set)的功能与前述GUI设计中对每个对象填写属性值的功能一样 %唯一的差异是在程序进行中用语句实现,其语法为: %set(所要设置的对象变量名,’属性名’,属性值)%本语句是将handles.texta这个对象的'string'设置为变量handles.a的值 %细节方面需注意handles.a是数值类型,需要用num2str转化为字符串 set(handles.textb,'string',num2str(handles.b));%与前一条语句功能一样,只是所修改的对象和属性值满足我们的要求。此时再次运行程序,界面如下,实现了我们的显示目地

下面介绍一下该函数内系统自动生成的语句 guidata(hObject, handles);的语法功能。

为了让程序内的各函数共享handles数据结构中的每个变量的最新数据,在每个函数中,如果用户修改或新定义了至少一个handles.***变量,那么切记在该函数的最后一条语句中一定要写上该语句,以通知其它所有函数:各位函数筒子们,我在工作中修改了共享数据,日后工作中请访问新的数据,以免数据使用旧数据而发生错误!所以在日后其它函数中别忘了加上该语句。

现在我们拖拉运行程序的滚动条或点击“跳起来”按钮,我们会发现没有所希望的响应,这是正常的,因为我们还没有编写相应的程序语句,下面我们开始逐个编写各个对象发生交互性操作时所希望的程序相应。

2、填写function slider1_Callback(hObject, eventdata, handles)函数体

找到m文件中的function slider1_Callback(hObject, eventdata, handles)书写下列语句:

handles.a=get(handles.slider1,'value');%获取新的滚动条位置值,赋给handles.a set(handles.texta,'string',num2str(handles.a))%在滚动条下方显示新的相应数值

r=handles.a*cos(handles.b+handles.n*handles.t);%用新的a,和已知的b,n和向量t计算新的r [x,y]=pol2cart(handles.t,r);%转换为直角坐标

handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);axis([-8.1 8.1-8.1 8.1]);%调整显示范围

guidata(hObject, handles);%通知其它函数handles结构发生了变化

如何?这些语句都不陌生吧?所以进行相应的调整时只需要简单的复制——粘贴操作。现在重新运行程序,拖动第一个滚动条,发生了什么变化?很兴奋吧?

3、填写function slider2_Callback(hObject, eventdata, handles)函数体

找到m文件中的function slider2_Callback(hObject, eventdata, handles)书写下列语句:

handles.b=2*pi*get(handles.slider2,'value');%获取新的滚动条位置值,赋给handles.b,注意要乘以2*pi的set(handles.textb,'string',num2str(handles.b))%在滚动条下方显示新的相应数值

r=handles.a*cos(handles.b+handles.n*handles.t);%用新的b,和已知的a,n和向量t计算新的r [x,y]=pol2cart(handles.t,r);%转换为直角坐标

handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);axis([-8.1 8.1-8.1 8.1]);%调整显示范围

guidata(hObject, handles);%通知其它函数handles结构发生了变化

4、完成function edit1_Callback(hObject, eventdata, handles)函数体

找到m文件中的function edit1_Callback(hObject, eventdata, handles)书写下列语句:

handles.n=str2double(get(handles.edit1,'string'));r=handles.a*cos(handles.b+handles.n*handles.t);[x,y]=pol2cart(handles.t,r);handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);axis([-8.1 8.1-8.1 8.1]);guidata(hObject, handles);这些语句的语法和逻辑功能我们都熟悉了,就不添加注释了。

保存程序,再次运行程序,特别是修改数据编辑窗口中的n值,观察运行结果。下面我们完成小花絮——在右侧的图像窗口中让老太婆跳舞。

5、完成function jump_Callback(hObject, eventdata, handles)程序体

找到函数function jump_Callback(hObject, eventdata, handles)书写下列语句

axes(handles.axes2);%下面的绘图操作在第二个图形窗口中进行 for nn=0:49 n=rem(nn,10)+1;%找到循环变量被10除后的余数,将余数加1,赋给n imshow(handles.m1(:,:,:,n),handles.map1);%在图形窗口内显示程序运行时四围图片矩阵的第n个三维矩阵数据 pause(.05);%暂停0.05秒 end axes(handles.axes1);%循环结束后通知系统日后绘图操作在第一个图形窗口内 注意到此函数中我们没有修改handles数据结构之值,所以不需要用 guidata(hObject, handles);通知其它函数。

介绍一个编程实用小技巧,随着GUI界面中控件的增加,m文件的function个数也越来越多,为了快速找到自己希望的函数,技巧如下:

在m文件编辑器菜单栏“”中的图标“”,点击它,会出现一个下拉菜单,里面列出了本m文件中所有的函数,点击自己希望的函数名,则编辑窗口中光标会自动跳转到此函数头部分。如何?很人性化吧?

三、为系统控制添加菜单控制

除了用我们已经看到的“按钮”等控件增加程序的交互性手段外,也可以象我们常见的很多程序一样,通过窗口顶部区域的菜单进行程序的交互式控制。本例中我们建立两个简单的菜单,其功能是第一个用于当前图像的颜色和图形线宽的控制,第二个用于打开此文档。

1、建立两个主菜单

回到GUI界面设计环境,在工具条上点击“标,打开如下图所示的菜单编辑器。

”(创建和修改用户自己的程序菜单)图

我们可以用它们编辑两类菜单:“Menu Bar”和“Context Menu”(上下文菜单),本文档只介绍前者,大家如果有性趣第二类菜单,可以查阅matlab的帮助系统。

连续点击两次上方的工具条中的第一个图标,下面的窗口中增加了两项,如图所示。

系统自动将其显示内容和变量名“Tag”(这个不陌生吧?)分别命名为“Untitiled 1”和“Untitiled 2”,现在点选其中的一个,如“Untitiled 1”,编辑器右边会出现该菜单的显示和控制属性编辑器如左图,编辑其属性如右图

点选第二个菜单项“Untitled 2”,分别设置两个属性如下图。

点击“OK”按钮。现在保存并运行程序,可以看到运行窗口上方出现了两个菜单条,这时再查阅一下m文件,我们会发现系统又自动生成了两个函数头

function m1_Callback(hObject, eventdata, handles)function m2_Callback(hObject, eventdata, handles)其命名逻辑是我们刚才在设计时将两个菜单对象的的“Tag”属性分别修改为了m1和m2。

现在在function m2_Callback(hObject, eventdata, handles)下书写如下语句 Winopen('Matlab交互式程序设计教程及举例.doc');保存文件,再次运行,如果当前目录下有该文件,则windows系统接受指令,打开该文件。

2、建立第一个主菜单下分别用于控制颜色和线宽的两个子菜单

回到GUI编辑环境,点击“”图标,再次打开菜单编辑器,选择第一个菜单项。

然后连续点击左上方的第二个图标,建立该菜单的两个子菜单项。分别重复1中的操作,在右方编辑窗修改它们的“Label”和“Tag”两个属性如下图所示。

对第一个子菜单项同样分别建立三个子菜单项,“Label”属性依次改为“1”、“2”、“3”,“Tag”属性依次改为“m111”、“m112”、“m113”(大家自己可以任意取个性化的名字,我命名的原则是m代表“菜单”,“m113”是第1个主菜单下的第1个子菜单下的第3个菜单项,这样日后在m文件下写程序时不至于混乱);对第二个子菜单项同样分别建立三个子菜单项,“Label”属性依次改为“红色”、“绿色”、“蓝色”,“Tag”属性依次改为“m121”、“m122”、“m123”。注意用鼠标点击其中的名为“2”和“蓝色”的两个菜单项的第5个属性前的框,出现“√”,用于在程序运行时给用户指示当前的画图操作是用线宽为“2”的“蓝色”绘制曲线,选择后如图

。修改完后菜单编辑器显示如下图。

点击“OK”按钮,结束菜单编辑。保存程序并运行之,在程序运行窗口中浏览观察菜单和子菜单的变化。查看m文件,发现系统又自动生成了8个函数头,后续我们编程控制需要的几个函数分别是:

function m111_Callback(hObject, eventdata, handles)function m112_Callback(hObject, eventdata, handles)function m113_Callback(hObject, eventdata, handles)function m121_Callback(hObject, eventdata, handles)function m122_Callback(hObject, eventdata, handles)function m123_Callback(hObject, eventdata, handles)其中前3个是用户选择“线宽”的3个菜单项的响应函数,后3个是用户选择“颜色”的3个菜单项的响应函数。

3、控制“线宽”的函数编辑

在m文件中找到函数function m111_Callback(hObject, eventdata, handles)在其后书写下列语句

handles.linewidth=1;set(handles.hh,'linewidth',handles.linewidth);%改变名为handles.hh的图形的线宽为1 set(handles.m111,'checked','on');%将该菜单项点选上“√”以指示当前画图线宽为1 set(handles.m112,'checked','off');set(handles.m113,'checked','off');%另两项菜单项如果之前有“√”,将其去掉 guidata(hObject, handles);%通知系统其它函数handles数据结构发生了变化

在m文件中找到函数function m112_Callback(hObject, eventdata, handles)在其后书写下列语句

handles.linewidth=2;set(handles.hh,'linewidth',handles.linewidth);%改变名为handles.hh的图形的线宽为2 set(handles.m112,'checked','on');%将该菜单项点选上“√”以指示当前画图线宽为2 set(handles.m111,'checked','off');set(handles.m113,'checked','off');%另两项菜单项如果之前有“√”,将其去掉 guidata(hObject, handles);%通知系统其它函数handles数据结构发生了变化

在m文件中找到函数function m113_Callback(hObject, eventdata, handles)在其后书写下列语句

handles.linewidth=3;set(handles.hh,'linewidth',handles.linewidth);%改变名为handles.hh的图形的线宽为3 set(handles.m113,'checked','on');%将该菜单项点选上“√”以指示当前画图线宽为3 set(handles.m111,'checked','off');set(handles.m112,'checked','off');%另两项菜单项如果之前有“√”,将其去掉 guidata(hObject, handles);%通知系统其它函数handles数据结构发生了变化

保存程序,运行它们,随意点选“线宽”的3个子菜单项,观察菜单和图形的变化,体会相应的程序控制逻辑。

4、控制“颜色”的函数编辑

在m文件中找到函数function m121_Callback(hObject, eventdata, handles)在其后书写下列语句 handles.color='r';set(handles.hh,'color',handles.color);%改变名为handles.hh的图形的颜色为红色 set(handles.m121,'checked','on');%将该菜单项点选上“√”以指示当前画图颜色为红色 set(handles.m122,'checked','off');set(handles.m123,'checked','off');%另两项菜单项如果之前有“√”,将其去掉 guidata(hObject, handles);%通知系统其它函数handles数据结构发生了变化 在m文件中找到函数function m122_Callback(hObject, eventdata, handles)在其后书写下列语句 handles.color='g';set(handles.hh,'color',handles.color);%改变名为handles.hh的图形的颜色为绿色 set(handles.m122,'checked','on');%将该菜单项点选上“√”以指示当前画图颜色为绿色 set(handles.m121,'checked','off');set(handles.m123,'checked','off');%另两项菜单项如果之前有“√”,将其去掉 guidata(hObject, handles);%通知系统其它函数handles数据结构发生了变化

在m文件中找到函数function m123_Callback(hObject, eventdata, handles)在其后书写下列语句 handles.color='b';set(handles.hh,'color',handles.color);%改变名为handles.hh的图形的颜色为蓝色 set(handles.m123,'checked','on');%将该菜单项点选上“√”以指示当前画图颜色为蓝色 set(handles.m121,'checked','off');set(handles.m122,'checked','off');%另两项菜单项如果之前有“√”,将其去掉 guidata(hObject, handles);%通知系统其它函数handles数据结构发生了变化

保存程序,运行它们,随意点选“颜色”的3个子菜单项,观察菜单和图形的变化,体会相应的程序控制逻辑。

第五篇:矩量法matlab程序设计实例

矩量法matlab程序设计实例:

Hallen方程求对称振子天线

一、条件和计算目标 已知:

对称振子天线长为L,半径为a,且天线长度与波长的关系为L0.5,aL,a,设1,半径a=0.0000001,因此波数为k2/2。目标: 用Hallen方程算出半波振子、全波振子以及不同L/值的对应参数值。

求:(1)电流分布

(2)E面方向图(二维),H面方向图(二维),半波振子空间方向性图(三维)

二、对称振子放置图

l/2电流分布馈电端~l/2yx图1 半波振子的电流分布

半波振子天线平行于z轴放置,在x轴和y轴上的分量都为零,坐标选取方式有两种形式,一般选取图1的空间放置方式。图1给出了天线的电流分布情况,由图可知,当天线很细时,电流分布近似正弦分布。

三、Hallen方程的解题思路

z2z1zizzGz,zdzc1coskzc2sinkz'''kjz0i' Ezsinkzz'dzz对于中心馈电的偶极子,Hallen方程为

L2L2i(z')Gz,z'dz'c1coskzc2sinkz脉冲函数展开和点选配,得到

Visinkz,j2LLz 22Inn1N1znznGzm,z'dz'c1coskzmc2sinkzmVisinkzm,j2m1,2,,N 上式可以写成 矩阵形式为 In2N1npmnc1qmc2smtm,m1,2,,N

p12,p13,,p1,N1,q1,s1I2t1tp,p,,p,qsI22232,N12,232 IN1ct1N1tNc2pN2,pN3,,pN,N1,qN,sN

四、结果与分析

(1)电流分布

图2 不同L/电流分布图

分析:由图2可知半波振子天线L/=0.5的电流分布最大,馈点电流最大,时辐射电阻近似等于输入电阻,因为半波振子的输入电流正好是波腹电流。(2)E面方向图(二维)

图5 不同L/的E

面方向图(1)分析:

(a)θ=0时,辐射场为0。

(b)当L/1(短振子)时,方向函数和方向图与电流元的近似相同。

(c)L/1.25时,最大辐射方向为max,主瓣随L/增大变窄。

2L/1后开始出现副瓣。由图6可以看出。

(d)L/1.25时,随L/增大,主瓣变窄变小,副瓣逐渐变大;L/继续增大,主瓣转为副瓣,而原副瓣变为主瓣。(如图6所示)

图6 不同L/的E面方向图(2)H面方向图(二维)

图7 未归一化的不同L/的H面方向图

图8 归一化的不同L/的H面方向图

空间方向性图(三维)

图9 半波振子的空间方向图

图10 半波振子的空间剖面图

附程序: clc;clear all clf;tic;

%计时 lambda=1;N=31;a=0.0000001;%已知天线和半径 ii=1;for h=0.2:0.1:0.9 L=h*lambda;len=L/N;%将线分成奇数段,注意首末两端的电流为0 e0=8.854e-012;u0=4*pi*10^(-7);k=2*pi/lambda;c=3e+008;w=2*pi*c;%光速,角频率 ata=sqrt(u0/e0);z(1)=-L/2+len/2;for n=2:N

z(n)=z(n-1)+len;end for m=1:N

for n=1:N

if(m==n)

p(m,n)=log(len/a)/(2*pi)-j*k*len/4/pi;

else

r(m,n)=sqrt((z(m)-z(n))^2+a^2);

p(m,n)=len*exp(-j*k*r(m,n))/(4*pi*r(m,n));

end

end end for m=1:N

q(m)=cos(k*z(m));

s(m)=sin(k*z(m));

t(m)=sin(k*abs(z(m)))/(j*2*ata);end pp=p(N+1:N^2-N);pp=reshape(pp,N,N-2);mat=[pp,q',s'];%构造矩阵 I=matt';II=[0;I(1:N-2);0];%加上两端零电流 Current=abs(II);x=linspace(-L/2,L/2,N);

figure(1);string=['b','g','r','y','c','k','m','r'];string1=['ko','bo','yo','co','mo','ro','go','bo'];plot(x,Current,string(ii),'linewidth',1.3);xlabel('L/lambda'),ylabel('电流分布');grid on hold on %legend('L=0.1lambda','L=0.2lambda','L=0.3lambda','L=0.4lambda','L=0.5lambda','L=0.6lambda','L=0.7lambda','L=0.8lambda','L=0.9lambda','L=1lambda')legend('L=0.1lambda','L=0.3lambda','L=0.5lambda','L=0.7lambda','L=0.9lambda','L=1.1lambda','L=1.3lambda','L=1.5lambda')Zmn=1/I((N+1)/2);%%%%%%V=1v theta=linspace(0,2*pi,360);

for m=1:360

for n=1:N

F1(m,n)=II(n).*exp(j*k*z(n)*cos(m*pi/180))*len*sin(m*pi/180);

end end F2=-sum(F1');F=F2/max(F2);%%%归一化 figure(2);polar(theta,abs(F),string(ii));title('E面归一化方向图')view(90,-90)%legend('L=hlambda','L=0.3lambda','L=0.3lambda','L=0.4lambda','L=0.5lambda','L=0.6lambda','L=0.7lambda','L=0.8lambda','L=0.9lambda','L=1lambda')legend('L=0.1lambda','L=0.3lambda','L=0.5lambda','L=0.7lambda','L=0.9lambda','L=1.1lambda','L=1.3lambda','L=1.5lambda')hold on figure(3)kk=1;for phi=0:pi/180:2*pi for n=1:N

FF(n)=II(n)*len*exp(i*k*len*n*cos(pi/2))*sin(pi/2);end;FFF(kk)=sum(FF);kk=kk+1;end;phi=0:pi/180:2*pi;polar(phi,FFF/max(abs(FFF)),string(ii));title('pattern,F({theta},{phi}),theta=90');legend('L=0.1lambda','L=0.3lambda','L=0.5lambda','L=0.7lambda','L=0.9lambda','L=1.1lambda','L=1.3lambda','L=1.5lambda')hold on figure(4)polar(phi,FFF/max((FFF)),string(ii));title('pattern,F({theta},{phi}),theta=90');hold on figure(5)mm=1;for theta=0:0.01*pi:pi;for n=1:N

E(1,n)=2*pi*c*u0*len/(4*pi*1)*(exp(-i*k*1)*exp(i*k*len*n*cos(theta))*sin(theta));end

EE=E*II;

G(mm)=(4*pi*1^2)/ata/abs(II((N-1)/2+1))^2/(-real(Zmn))*abs(EE)^2;mm=mm+1;end

H-plane

L/lambda

H-plane

下载2MATLAB简单程序设计word格式文档
下载2MATLAB简单程序设计.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    电力系统潮流计算的MATLAB辅助程序设计,潮流计算程序

    电力系统潮流计算的MATLAB辅助程序设计 潮流计算,通常指负荷潮流,是电力系统分析和设计的主要组成部分,对系统规划、安全运行、经济调度和电力公司的功率交换非常重要。此外,潮......

    matlab作业题

    第一章 MATLAB环境 1、MATLAB通用操作界面窗口包括哪些?命令窗口、历史命令窗口、当前目录窗口、工作空间窗口各有哪些功能? 答:MATLAB通用操作界面窗口包括:命令窗口、历史命令......

    Matlab心得体会

    Matlab心得体会 10金融3 吕淼 2010241125 在为学习这门课前就听说了他的强大,因为现在的经济模型都是需要这些分析软件的,也曾听说金融的未来方向是需要数学等等作为依托的。......

    Matlab心得体会

    Matlab心得体会 10金融3 吕淼 2010241125 在为学习这门课前就听说了他的强大,因为现在的经济模型都是需要这些分析软件的,也曾听说金融的未来方向是需要数学等等作为依托的。......

    matlab学习心得[最终定稿]

    学习MATLAB 感想 学习了 MATLAB 这门课程,我了解该软件的基本功能,也知道 了该软件在我们生活中的重要地位。随着社会的不断发展,科技 的不断进步,计算机的普及,它也被应用在越......

    MATLAB论文

    MATLAB与在信号与系统中的应用 姓名:江肥 班级:*** 学号:*** 摘要:论文通过MATLAB在信号与系统中的应用实例,探讨了MATLAB在信号与系统中的应用方法和技巧,对运用计算机软件完成......

    matlab实验报告

    求解:1.模拟比赛车道曲线和选手速度曲线; 2.估计车道长度和所围区域面积; 3.分析车道上相关路段的路面状况(用不同颜色或不同线型标记出来); 4.对参加比赛选手提出合理建议。 四.合......

    MATLAB作业

    第一章 MATLAB R2010a简介 主要内容总结如下: 本章主要介绍了MATLAB的功能和它的用户界面以及MATLAB R2010a的路径搜索。MATLAB的功能是多种多样的,有数学计算功能、图形化显......