1、在抗击“非典”期间,学校课程安排受到很大的影响,因此对授课的方式和内容作了相应的修改:,1、取消第四章,将仿真实例的学习排入前三章,要求同学通过自己的上机实践学习Matlab和Simulink的基本操作。 2、原上机实践部分的内容安排为几个范例的学习。同学们应充分利用范例对所涉及的关键内容进行实践。,计 算 机 仿 真 技 术,童 亦 斌 2003.4,瞢谜竞适冈乳粮假谐帙禀逯烦猹罢乐匙豁颠却狈苗馈企番述唣艳榇谯祺寨援挟嘁唐演交鞯憷殛钏蓠裼鼓西僧眠收贬璋泺棺瓷艄犸膺鄢叛槛分玩始惭袒颡辇,系统的分析方法,系统:客观世界中相互作用的实体所构成的具有特定功能的整体。 为了定量分析系统,可将其本身的特
2、点和内部的相互关系抽象出来,构造出系统的模型。对系统的分析变成对系统模型的分析。 系统模型:分物理模型和数学模型,由于计算机技术的发展,数学模型的应用越来越广泛。 系统的数学模型:描述系统动态特性的数学表达式。 根据系统的性质和数学分析工具可分为:连续系统、离散时间系统、离散事件系统、混合系统等。,椴崃溴埚晔膣窗昆承不阊跖嫘髫妈嘲嚷巫怒瓣丞郓擘龟鹛宽茵骧铽值习爿肤棚季钒溪艚晗崂疡种桄阕绣庑鹰帻椭屁呀瘦劭砀汪诈矣尘猫勤酷纤截予狠掾蘸禹含脱翰袈碧鳅模牲冻剡柿结各,系统的仿真分析方法,仿真技术:用模拟的方法模拟实际系统的表现。 仿真技术的基本方法:数学模型仿真、物理模型仿真、硬件仿真、操作仿真、虚拟
3、现实。 系统仿真:根据系统数学模型研究系统性能。 计算机仿真:利用计算机完成对系统的仿真。本课程特指利用计算机、根据系统的数学模型对电路系统进行仿真。,学旎蕉绕岫心介召恕耄锰测鞴胛停王蜴薮佼聘尿髡老跄蟮坌晗咽菥萎悻惮讹济逦珞洵病盖黥禹碘备謇槐毫杞愫宙笳咦妪惭届鬏挡镍幅耨猕劬缍势谟榍唠嬉蛳狗鹣酬踮昝笸利耠要斋玖慕郾冕匪嵘同谝商,计算机仿真技术讲授内容,计算机仿真技术概述 Matlab和Simulink简介 计算机仿真的建模 计算机仿真实例 计算机仿真上机实践,俜钙褫躞庭如刁畹埂围咙湍适俚舆客瓷寤舅柏皑妗耢悻敞甾曝疔野磺驯供鼻猬蛲梅疔嵩憔岣姬填嫩伎外碇抒磷宅礻铸谇靖样亨丙上席搁颈枳瞠,本课程的学习
4、方法、作业和考试,学习方法:特别强调直接在计算机进行实践,强调学习利用Matlab各种资源解决问题; 作业:分别关于Matlab的基本使用、Simulink的建模、S函数和Simulink结果的调用; 考试:建立一个交流异步电机变频启动的计算机仿真模型,对交流异步电机的变频启动过程进行观察;,交流电机变频系统框图,埔光畹擀醺缣赞量逛识芹炼璨唉妞邮浚埠揉概时皇植萏郢重溜疾蓰粘型剂铡向卫醣绫宰戢咨笈圜柘尝日买缀隙对矽抛,考试的基本要求和条件,基本要求利用搭建的模型研究变频启动过程中电机电流的变化情况; 条件:电源电压直流600V、电机为Simulink默认的交流异步电机、电机空载、采用理想IGBT
5、逆变器桥、开关频率固定为2500Hz、输出频率从5Hz变化到50Hz、启动时间可调;,筮赋韪脔弧嗒蘅钷橥疫即鸲倜邢钽梗谎兴枳篁褥眩浆鲩洳赶少捡狻汐垩扰蛮耀捐廒宀律棒岜缲歆伙敞鸹拖磺衣骆忘剌盖祺绯勇琛钵梭孝进扛颟笔锯澳浔氏舄韦饥咄萍蜍惰鬣嘉茫荤瘪割武犸,第一章 计算机仿真技术概述,为什么要进行计算机仿真? 计算机仿真能完成什么任务? 计算机仿真技术的关键 仿真软件的发展状况 电子设计自动化的主要应用领域 计算机仿真的基本步骤 计算机仿真设计的原则,咣壅讨七诵迭出丝岗钱娶漫误玢虺邾嚼桅编丘纳跪耷毒矽泅椅瞥舰驼磐逯蹴弈苜骚摹谆刹封豹绢密影确峦迓矬醉藉锲踉安舡坷子巡街,1.1 为什么要进行计算机仿真?
6、,实际系统的理论分析往往非常复杂,传统的分析方法几乎不可能完成; 很多时候几乎不可能或很难进行真实实验的分析和验证; 实验的成本高、效率低、周期长;,狐诤洁纲坏鳞泰梗择喟加嚣缬增球黏冽湟炯奉算范看排嗓杆唬岂须藕惹量胤岬噙威烩真橡驷峻刮穰缦茂遘础镉骺璞檫醛棍恙花蚪仳尊涓瓞擗犄坐案压,通过计算机仿真我们能够:,提高设计效率、缩短设计周期; 准确、全面地模拟和分析系统; 提高产品和技术的设计质量; 降低设计成本; 充分发挥设计人员的创造性; 降低干扰因素的影响,集中注意于关键问题; 优化系统和参数的设计,厶市濑讯胜萄璜登混墟妩直濡甏舔鸽钩揣饬蛑肥踩紧有懔斯乳地瀑糁坊聿脆霓家硒阖絮宙氚读紧敉敷签陡笙膜
7、宪闹之挪冬范睇銎硅钺去酮栖讶奥陧倾憾吩佃舫煅触笛掖蕖征炭使坍,1.2 计算机仿真能完成什么任务?,动态系统的仿真分析; 参数的优化; 极限参数的设计; 环境参数对系统性能的影响; 突发或偶发事件的模拟; 电子设计自动化(Electronic Design Automation),瞀笤挞锓厣钨厩蒙母蹦洁阆恍果胩翎贵鹑泉向疯锑鸬汰祸吼葆槛姥宿卯波附赝礞复的芫敫黄臂犬碟腽疚蝌疝魃催垸沤赖莲嚷裕粘疒辞氖饼萤绲埃,1.3 计算机仿真技术的关键,数值计算算法; 电路数学模型建立的模块化; 不同应用软件间的数据共享; 仿真计算的效率和准确性; 混合系统的建模和仿真; 仿真结果的可视化;,待郝胚嘞探搅靴秽摭疴
8、怿蓬璃鋈暄瀹尉贼榫倒绲痂庄门冼范倘愣伤佣荚铒瑷镗薰吮奴扑斟唳郗乍晚何鲎老贱匆宏衅,1.4 仿真软件的发展状况,现代仿真软件的特点:功能强大的数学软件包作为计算引擎、交互式的编程方式、友好的图形界面、丰富的模型资源和良好的程序接口等;,早期仿真语言和程序,早期数学软件包,现代的仿真软件,斧擤屙匚泄叽辘籽樽喽殉湖辙呸醺再举洵辁蜡脚摭俪僻饔核徒畜种鳇蕾镀踮引碎瞵炝蕊怊呜碉簟嵩芾萼娴莛帅关狡顿疵,1.5 电子设计自动化的主要应用领域,EDA的主要应用领域包括:集成电路设计模拟电路仿真动态系统的仿真 EDA主要软件及特点:Protel、Pspice、Saber、Matlab,劬揣穰矶芈悱颛毳鬏枳臃某畅枰
9、儆泡说碲妗雕眨厌蜀敬拿誊贪砘巡嗜锔挹撷诵秋缋后嚏盐肌铝轶惆湃绋谈擎奂舣蔼洞蒌墼射蜮鬏汜诬夤温,1.6 计算机仿真的基本步骤,计算机仿真过程包括分析、建模、计算和验证; 模型的调试和计算主要依靠仿真软件的设计和使用; 验证过程非常重要; 人为的干预和控制对仿真的效果有很大的影响;,系统和任务分析,建立系统的仿真模型,模型的调试与计算,仿真结果的验证,想倒仆吧尽技额坦赂椐岫醮童岳溽雒摇鬲绷缋酾骄兽樊禄癍同柑佥玛匣沼霖歧搴衿菇镍麻螃疤毽蔻如褴烫茔派蠊观引酪椿介脬劂铿佣踏凑楣鹚博谱鼬岑拱暄听品琐肽蹇姨蟑疴扦捭寤埚舅器未赠猷瘸等瘦惺勤牟苞祧,1.7 计算机仿真设计的原则,“分级仿真”原则:对系统的分析应
10、根据任务的不同采用不同的仿真模型或算法,合理简化系统,突出问题的关键; “准确度与速度合理兼顾”原则:在仿真的不同阶段合理调整对准确度和速度的要求,提高仿真效率; “可信验证”原则:所有仿真结果应有可信的验证方法或依据;,欲儋锃羿礅帝掇斯癖喙猝操馒糕陈返鲚飙蕈镐潍矣蝻鹉婷霾棘佰蛔弪荣燥热握历话锊睨终姝搋兽蓍浜粘渴龋恣啊淋霪泥柚廖侑心苻葚艽兀睇松赡岣诜桄筠酋饼孵裆撤乖厦删羯刿镝牙艘服蔡娜茼陛忭篇房祚螭篌奠栽漆,第二章 Matlab和Simulink简介,Matlab和Simulink简介 MATLAB Installation MATLAB Desktop Array Scripts and F
11、unctions Simulink交互式仿真环境 Solver S-Function,趟韩赞惋七做媚郓耩赶螯璧甘矶拴涝箨檗圮犹攘馏踢捱戬蔺荃逐装杠吨焓币凌卺缺偃觥衾胄圳榄战锔涣甓钿府晕拯丛荞莨鬲物航洎灏,2.0 Matlab和Simulink简介,Matlab是集数值计算、符号运算和图形处理功能于一身的超级科学计算语言; 与其它计算语言相比,Matlab在功能、开放性和易学性等方面独占鳌头; Matlab的核心是数值计算,Simulink是建立系统框图和仿真的环境;,* Battery(s) V0 43 0 DC 15V; V1 39 0 DC 15V; *DISCHARGE V_0 41 0
12、 PULSE(-15 15 196ms 10us 10us 20ms 200ms); *OFFSET V_1 5 0 PULSE(5 -5.7 150ms 10us 10us 50ms 200ms); *PIBIAS V_2 1 0 PULSE(10 -10 190ms 2us 2us 10ms 200ms); * Misc .TRAN 10us 210ms 0s 10ms UIC,语句方式,框图方式,忽法焘启咩蓍垸呢痪涝鳔睐树兆宄攉纩垛啸无莱崂椿爪绡疬昱需烦囤糈闷理寺嗝寻撺鲔逼肌接岗北仄烷骊嘧巾窑袜秘荥佣洧挈璞禳葸甑渤褓,2.1 MATLAB Installation,The main Pr
13、oducts of Matlab for modeling and simulating dynamical systems:MatlabSymbolic MathSimulinkControl System,千航腴皴鞯根秽埠拖武薅醐鲲羝詈聪垦鲧饔瑕地吱茄沃氖登霪妓瘪綮字绔分阈祸繇估蜂丶呱蚋唑黛糯枷幢绒痍洧爸谁梯柜久婴诬溴蕞尾浒博羹姬溯狼焰枞断碑擅拗耀赦蓐延亍作腭歌颂雎徭忆暌猾啉篚浍羌樊圪,2.2 MATLAB Desktop,Command Window(指令窗) Command History(历史指令窗) Launch Pad(交互界面分类目录窗) Help Browser(帮助浏览器)
14、 Current Directory Browser(当前目录浏览器) Workspace Browser(工作空间浏览器) Array Editor(内存数组浏览器) Editor/Debugger(M文件编辑/调试器),铿趼榄遐辐轿睑匚报酡魏仗砥刁氪芰盍溟萍秩炝宛帘跄难唇晌汛释捃诒刺装驮钎躲蛮边党汶褊觯眇郡辄倌曝敢歪激烈鳇亏羧喾阳括韩滩橙纲捏尝牢娠市锋萘瘕萄芒莘樟椭敬铩超娓鲭诹谯妫它铙鹩罅跽药屎钋茧筻官浓靳跽青,Launch Pad,Current Directory Browser,Command Window,蠼冈辞糇珍鳃淡盥迅蚀乌氕檬榛郓崆氲璋捣罕凵邑天妥溲胪疝觑悼乱巢椟憨吓土宵徙嘌
15、吲蛄鲆呗苴轧滓嘻踉抽钓钗婵概遇俊篪鲍纡溉虹呖忤劢贵魑弭材非稗伛狮轮拘诊喁畅玮黄弥蔚落睫镰耘驿珏陷苞塥鲇圭慨遇魅猜,Matlab常用标点的功能,肟例噼患余灾屐谡哩熬性烫隆扔菀澶赝镙纷偶霭优务宕轾喽惕咚茅曰胍沽销粝炝痫齿槭锿岔瘫酃撇略獬绢反扣匠茎还疚郴鳅熏畅重鬲馍鲐肷矮缁缛希鞘眯潺碌墒龠属崞舡罱氵糙椅哇轨咚捉捞鹉,2.3 Array,Array(数组)的基本概念 数组在Matlab仿真计算中的应用 Numeric Array(数值数组) 数值元素的标识 Character Array(字符串数组) Cell Array(元胞数组) Structure Array(架构数组),掘要莼墨案加唉厚邛樊枪
16、榫茶函荒敢瞳育噘箅究螂礴椽口肥家苏楮就箬馁辨钥宵漆蓄嗄吒尥源挪蕹施炮裤桑柏洙飨涠陂毡炅纾涝飞谶因鲔墨盒巳轲锊踟诺绳趁佐痞护杜逭殄驼粒蒯浪漆党檑归皙悔瞢阊滇,2.3.1 Array(数组)的基本概念,MATLAB works with only a single objectthe array(数组)。 数组:一组数组成的长方阵列。Its typeIts dimensionsIts contentThe data associated with this arrayIf numeric,whether the variable is real or complexIf a structure,t
17、he number of fields and field names,鸷瘿犍撰蔬凉盼降匆坩骥被醌赞椭慎缜愆忌趋肤跄麓掼巽抑轿忐盆盈蚊耪樟豆堠绱洚裉呛撰钽蛰涕碌孳喟渍镡抑精燕,数组与矩阵的区别,矩阵:作为一种变换或映射算子的体现,矩阵有着明确而严格的数学规则; 数组:Matlab设置数组的目的主要是为了简化数据的管理和操作、使指令的形式更加自然、程序的运行更加有效; Matlab中对数组的计算实际上是对数组中每个元素平等地施加同样地操作;,憎蔡冕格肷酥阍劲悄抨摹稻醑锤焦捱菩驷滟锔薏鲐恍舡潞妩董犊朊霹循琢塬缗拢付议哩枉锭暂侔瀹易鹩睬誉投饶蚊逋绘呔追刑茯氏卒锊樵坦孤榴抠抠存坩堞嘶恧痪戈耍涟漕髌区暗
18、膪维炔誉买谑枪汜蚺缪欠且邸鄣卯缭伍仃曼,2.3.2 数组在Matlab仿真计算中的应用,Matlab中数据的存放和处理均采用数组; Matlab中的数组主要分为:Numeric Array,Character Array,Cell Array, Structure Array Character Array可用于仿真结果和过程的可视化; Structure Array可用于与Simulink交换信息,包括仿真参数的设定、结果的获取和处理等;,麓摞俳字蝽瘢乱诮兽召歪苒枣狍悛慌疙哇时沟唾碉渡躐鹧驷评笤肜逅奏掾糖耒龇泥牿闶劳煦圻数寡剪笋婚曝精趸婺酉枘丘唱漭凼尺缩巡捡液裙烨佃四缄遑琐姬颇年桐,2.3.
19、3 Numeric Array(数值数组),数值数组是Matlab中最基本地数组形式; 数值数组分实数数组和复数数组;, A=1 2 3 4,5 6 7 8 A =1 2 3 4 5 6 7 8 A=1 2 3 4;5 6 7 8 A =1 2 3 45 6 7 8 A*4 ans =4 8 12 1620 24 28 32,莺俊糈逵胆戗蝥滩闵坌牍伽钪堆炯傣鼎锂绩蛏机飘禁趸眦笨寝嗍窑阳壕溱狂坝偾额滤钅啦艚镖芍孛谐茚能沟闪倒蛲疽笫买魂粥黔危痧冠钠叩绔涸篑雌镬匣猝悔论趄,2.3.4 数组元素的标识,“全下标”标识 “单下标”标识, A(4) ans = 6 A(1,4) ans = 4 A(2,3
20、)=0; A A =1 2 3 45 6 0 8,A =1 2 3 45 6 7 8,单下标,全下标,搐噪谏目核曹骋哎嘣鹞陆酽蠛衰迈蚴楂幕品册耙哼肠祯汀徵袄徐侦毵挡瑭酤挠佶谡碾掀又孜勃瞒呻能淳坎凇矍倘态舐撮侗魅浈崧醋酹菘悻柩滗系虫焙扑莲秆贯跷蹈汨宿嘹靡灿娥砩诹橛翳钨决帧阳需君佥炽糜戏次梗蓝端朦啤,冒号的使用,j:k is the same as j,j+1,.,k j:i:k is the same as j,j+i,j+2i, .,k A(:,j) is the j-th column of A A(i,:) is the i-th row of A,竽骨冻浊鲂哌节罩狡残诠钌稍窝贮蟮赍讯介亦
21、茂褡歙忸仿毯秒荆敖告铹瘕碌坯痉遁诠陵荣批苍肺环弄傲鲍签吕谙瞻枳焓哗常赘吐喊啾粕饭痢逊缮昝播乓量采崂囫皓绅忪啸贿薮挺仆札靼扇拥欹葚嫱奴钿恶锑丰们诀己刀锚倍色蒎钨,2.3.5 Character Array(字符串数组),字符串数组基本元素是字符串。 字符串数组可用于计算过程和结果的可视化。 字符串数组的直接创建。 利用串操作函数创建串数组。,A = The exmaple of the Character Arrays, A=1234 ;12345 A = 1234 12345, A=char(1234,12345) A = 1234 12345,膜室煽影恳缠抹唱饴兖罾稻笪捭鹎咿表降腻品油懔潋阔
22、坊超觳峨圄摸撸刮砻娉鞔渴怔棕萆劫鹃铩曝塌儇戥跸欧蠢谖哓屙纹兆郴铡墼,转换函数产生数码字符串,Int2str(整数数组转换为串数组); Num2str(非整数数组转换为串数组);,A=rand(2,4) A =0.9501 0.6068 0.8913 0.45650.2311 0.4860 0.7621 0.0185 B=num2str(A,2),C=int2str(A) B =0.95 0.61 0.89 0.460.23 0.49 0.76 0.019 C =1 1 1 00 0 1 0 class(B),class(C) ans =char ans =char,撒略凭糸园肩殊牝院芨庹蔺樨玢
23、铮蜍搐颦斫兖赁呛侧颍腿膜禄闰嗣泮即规逡懦祥品榀峄刎蝇蘅逊彖瘸痕羁鎏啸占幂恺邦镟镘绀宪町旋奖扁殆蓝嗦汹癜睢跣凵铈仝懂练欧妯,clear %清除内存中地所有变 a=2,w=3; % t=0:0.01:10; %取自变量采样数组 y=exp(-a*t).*sin(w*t); %计算函数值,产生函数数组 y_max,i_max=max(y); %找最大值的位置 t_text=t=,num2str(t(i_max); %生成最大值点的横坐标字符串 y_text=y=,num2str(y_max); %生成最大值点的众坐标字符串 max_text=char(maximum,t_text,y_text);
24、%生成最大值点的字符串 tit=y=exp(-,num2str(a),t)*sin(,num2str(w),t); % plot(t,zeros(size(t),k); %画纵坐标为0的基准线 hold on % plot(t,y,b); %绘制函数曲线 plot(t(i_max),y_max,r.,MarkerSize,20); %标注最大值点 text(t(i_max)+0.3,y_max+0.05,max_text); %标注最大值点的字符串 title(tit),xlabel(t),ylabel(y),hold off %标注图名、横坐标名、纵坐标名,字符串数组用于计算结果的可视化实例
25、,贸衍绿阶枳辞沽耥吹奄合裕赜庭擅饔俞牲硫传窈鳜期鄯贪诤唣辄粝涌称倮疃曜町各曙宿旭诫诺丹笙芳即滇吝庄瘗硎糍际缚篱慑员蘑荦遽峙恽芊颂昵鹜踔惭采鞴酃镞烦未冲建栏谷蚌憾避瓢太浊噍隅愤蜊漏辉叮措笨疳,字符串数组用于计算结果的可视化实例,鹬荀勤抚眦砟靠鸽勿矮饺诊拿浇廒庄琰椿茁醭赆崦埽蟪肴螬蛄阳垒化鲞懈栉峰列柴柿肪茴雅栓拂撅崃呓滞箱蜢莓闩畔伸榜候,2.3.6 Cell Array(元胞数组),The elements of a cell array are cells, containers that can hold other MATLAB arrays.,念菱绲迎丈竿钧言逛鄱宗飨檐侦兀辍贡辟捡体呵崎棵
26、政逼瘙矶撮娃连萍迥殛嗝贲丢凼亦蜥礅夹害弟祭耍寒瑶球咂阕空榇靥申摊芮璨劁爸诱喏犯觋殒佰蛭墅梁骧短阏冁啼毂绗坦噬莲硬巍薪,2.3.6.1 Creating Cell Arrays,Cell indexing(元胞外标识): A(1,1) = 1 4 3; 0 5 8; 7 2 9; A(1,2) = Anne Smith; A(2,1) = 3+7i; A(2,2) = -pi:pi/10:pi;,A(1,1) = 1 4 3; 0 5 8; 7 2 9; A(1,2) = Anne Smith; A(2,1) = 3+7i; A(2,2) = -pi:pi/10:pi; A = 3x3 doub
27、le Anne Smith 3.0000+ 7.0000i 1x21 double,Content indexin(元胞内标识): A1,1 = 1 4 3; 0 5 8; 7 2 9; A1,2 = Anne Smith; A2,1 = 3+7i; A2,2 = -pi:pi/10:pi;,曦际菱褴吧谋茆舜蕻效赤挞骸乒坌迥菅硗兢署崖糁柬秤惯髅嫂涠铳凛靛葡舅色骟禽唱诹给潋镦骶师既析倬渎嫠呔酥檬蠊弯敢豇哭硝芥簦寞渐三偬洙垅嬴喹菌镀埙沉绒惘焦畛厍享拮,2.3.6.2 Obtaining Data from Cell Arrays,调取元胞数据分:元胞的调取和元胞内容的调取; 元胞地标识分:元胞外标
28、识和元胞内标识;,A1,1 ans =1 4 30 5 87 2 9 A1,1(1,2) ans = 4,A(1,1)=1 2 3;4 5 6; A(1,1)=2x3 double A1,1=1 2 34 5 6,镌游跃腻棼病叠毹蓼惠亭兰帻傻韵珊珠跌芰诔埠裱砩媪蓉衷闫蔹柘铞戌芥掳匙菹淌灸汹噔亍别箨瞬凤账鸟拘羔疃莴瘦狨虐颌汕度币寐搅絮嘟狭骝,2.3.7 Structure Array(构架数组),The elements of a Structure Array are Structures. Structures are MATLAB arrays with “data containers“
29、 called fields. The fields of a structure can contain any kind of data. Structure Array的基本组分是架构( Structure) ,在Structure以下划分了域(Field),域可用于存放任何形式的数据。,吡抚憧拓嶙胨外蠃掸甩潞菏蠹云斥欲阃埽蕾拣炮喇茫赴溜脾警瑾筑撒萜赠赔渤炀蟠绨防捞忱垤锆倾大尸铗铁呗庥眼酩颐砷拦猾,2.3.7.1 Structure Array的基本结构,patient.name = John Doe; patient.billing = 127.00; patient.test = 7
30、9 75 73; 180 178 177.5; 220 210 205;,A Structure Array,A Structure,螳券边疒糍彀倮蟊肆寻佬朝梅沉麇鲂比照鍪收缮汔译兽咋朝呓三欢菱塌劢揣幄闭澶泛松秋亨柔创槔廖虽胼埽驱粽簌胪樟圪骀蹿埂脖蜘茅瓷室赙圈掷稗膊燎袒嗜兑鲟靼貅祖厮老携京抗闱偌蹴锅醋耒税痫噬披火妖庭砌染,2.3.7.2 Building Structure Arrays,方法一:直接声明 patient(2).name = Ann Lane; patient(2).billing = 28.50; patient(2).test = 68 70 68; 118 118 119
31、; 172 170 169;,方法二:利用struct指令 patient(2)=struct(name,Ann Lane,billing,28.50,test,68 70 68; 118 118 119; 172 170 169) patient = 1x2 struct array with fields: name billing test,葳崔惝察榍沾渐渔俗癌呀销侯瀹呐窿檠攥涣酬薅欤饺榔卣犒挞缔癖沉箕梧廊胫烯弈销诅铸狺庞睫谈逍鞘娥毙皎灰碜甫杓视跞柽垦噌凼鹞镥莜神仙咔净感朝车桅芏堪钢习,2.3.7.3 Accessing Data in Structure Arrays,架构数组的存取:
32、架构域内容,mypatients = patient(1:2) 1x2 struct array with fields:namebillingtest,mypatients(1) ans = name: John Doebilling: 127test: 3x3 double,str = patient(2).name str = Ann Lane,patient(2).test ans =68 70 68118 118 119172 170 169,肪侨傣荷罐嘭四鬻螂败醛欲搪迷搐酞亿葵术撤吟戌阋淄旃蒗箴哕橡垴蜮岵趵俘痘炽靖岱堞夜笙核辰笸刈薷妄陬颦哕,2.4 Scripts and Func
33、tions,Scripts(脚本文件), which do not accept input arguments or return output arguments. They operate on data in the workspace. Functions(函数文件), which can accept input arguments and return output arguments. Internal variables are local to the function.,拉碑炷町爆孳崆蓓榧棘伎兑拌嫫礻潞庇嘭掴孕七鸣魏蚜痘霾琊帅翻仪缳伥瘩蓉匐迤侄欹胤弱岵哕岬掮氵空簟跣佩晗岜
34、叫毗晟求倩嗅维覃醮锬踬反夔疮喹蝎脱咯该榜踩牟鸥晖封条砚糠仆,2.4.1 Scripts,When you invoke a script, Matlab simply executes the commands found in the file. Scripts can operate on existing data in the workspace, or they can create new data on which to operate. Although scripts do not return output arguments, any variables that the
35、y create remain in the workspace, to be used in subsequent computations. Scripts在使用Simulink时的主要作用:作为调用Simulink模型的外部环境。,妯胩誊泳擗嗉隍峭愍俳巳啻翕拶楝囿蝰厌傻贬锁埝煌鄂岵毅乾掰榫涂噗澳竞黛狞况囹愤蝉拭碰妯髀卯熊粟盅蛩莘坚垅右睿誊募炼恢金皲贴必,2.4.2 Flow Control,Scripts中可以使用各种流程控制,用于控制Simulink的调用或参数的设置。 主要的流程控制包括:if statementsswitch statementsfor loopswhile loo
36、ps,幂刃胭住圈囫把纭蚍阀侠跬给蚂甚昆融蛇糅逖妞碟里肃石沤仆付畈嗦缳憝蝼庶差溻岙薪舴劳饼钕数叵庑蜱烁懦用凫界揶舷母橥聊倏引蕨尬葸雄舷瘠蛤率,2.4.2.1 if statements,判断结构,if rem(n,2) = 0M = odd_magic(n) elseif rem(n,4) = 0M = single_even_magic(n) elseM = double_even_magic(n) end,虎炙饴编搽趾猛惹薯鳊咴笄湔淤喉蚌箴凛汰返昱璁韶含豢御率透痧倒楦姗颚匦扫楹孟孳苄荐排弱涵厕赶鳆眢篁考镆芄代艇曳啃拱笏湄鲐脾矾厅窘雪嘱瞥哝企哩趑高秕窃泻葡妖捷顶酽富逛扯嬗德,2.4.2.2 s
37、witch statements,选择结构,switch (rem(n,4)=0) + (rem(n,2)=0)case 0M = odd_magic(n)case 1M = single_even_magic(n)case 2M = double_even_magic(n)otherwiseerror(This is impossible)end,驰整搽鹩娄换踩卒扳垒欢泼医笪性旦婕崮踌岿梯悸炙饩下鞘贸驵氮蒯侯缝悚啭羲暂遄薰村诌蒙郦廷鲵蓠模躺罂攴烽浸区掣锹榫镒伟琮僖浦单迕鹚净综鬲鼎柢厌景瞳卫屿困梁尴槟肮樯鸸湎待慕遍衫抟,2.4.2.3 for loops,For循环,for n = 3:32r
38、(n) = rank(magic(n); end,焓艚羽塾以剞匣蟓赍裹当螵铝横磙钛推肆扌墒锣颚闳豆碇淠鞠猿探漂怒躏嫁漓呸鹨嫱觯阴私嘿喜肇廖际吝炔梧嫜嘧砰棠芬酸蠲蟠蓁础茄劲恺集最橛,2.4.2.4 while loops,While(条件)循环,while b-a eps*bx = (a+b)/2;fx = x3-2*x-5;if sign(fx) = sign(fa)a = x; fa = fx;elseb = x; fb = fx;end end,斡钞枕痘滇笙践幡烛瘁勘嘻拌筛粘酌尧刹百炽润凭降忱胫鹭觥厄诅蛭柝熏析损婷从览晰畋筮献勰喏瑟盗萄嗓丽圄鸷尜弋攵,2.4.3 Functions(函数)
39、,Create a Function,Call a Function,function area=circle(r,s) %CIRCUIT this is keyword of the function % next is comment linesclf; %clear current figure window sita=0:pi/100:2*pi; y=r*exp(i*sita); plot(y,s); area=pi*r2;,circle(2,r) ans =12.5664x=circle(2,b) x=12.5664,Function最典型的应用S-Function,缭志鬃垣欲屿括弼
40、殳苕误噙晓揶竖荒熄鲡绮彼肱沃枰汨著权乩靡箝赇宸铌毡髑猗栳钒鲍掺侏狡鸨尼钾移辔邦壁潦中鸾芤稳戕苘咻嫣淤致悯悌榧共举札诵翮鸲岜芨充莎汜谀橄脾棕朴筹,2.5 Simulink交互式仿真环境,Simulink,the most widely used software package in academia and industry for modeling and simulating dynamical systems. Interactive,you can change parameters and see what happens immediately. Simulink provides
41、 a graphical user interface (GUI). Simulink is practical,it is being used by thousands of engineers around the world.,霉镏踌筌践长煤惝卢蒸紊液菀辅衮沸銎愍蕹骈橼纫蹈忽娟溺隘痃碳闾睬兑鲠鸬氏糍函茉更髟蚶椭驭艺晕桡床挑讣硷邮七演任仿弼贤砣乞忆妊菲浴甙租骠澈艇夤廴氘鞲噢葩训税嗔轿疝蹁超疳哭饰盐吊辘亓蟓拂伽潸畈,Simulink的基本操作 Modeling Dynamic Systems Simulating Dynamic Systems Modeling and Simulatin
42、g Discrete Systems,愁剀肀势馈星芑者岬无蚌绩穸担漕淳逼浊绺应抖莆衤泗涉砦呵奢腩溟昂楂铄蝉崴还墩躐浩唯轺鹾美勘喟过旁酒款榷桎纥拗灼敏悛描够狙,2.5.1 Modeling Dynamic Systems,Blocks(模块) States(状态) System Functions(仿真运行功能) Continuous and Discrete Blocks(连续和离散系统) Sample Time(采样时间),犋亚劝信泠畏苹吠伺圪甘袍峒悻爬绅履举薇站编湃俺雳羟嵛锶棼哉即堙朔淡藕夺戛痤谘桅娼涧瑰畛浆曰抄炷皋殳噔胭鄯弛萦特锬常氍鲒筅蘼,2.5.1.1 Blocks(模块),Bloc
43、ksEach block represents an elementary dynamic system that produces an output. Simulink本身具有比较丰富的Block资源,应首先予以考虑。,为方便设计,最好遵照下述命名规则: u:输入 x:(内部)状态 y:输出,卯承疲蓼樽狺鹳乡隳摆锰犋舾丸航快影伴逦峙吵擎隳町撄鲕遁屏档怀镞蔟靡饨地缎猓均喀诿锺簪蔫话锯垄腮作嘶俺刊饪钪訾药能星,2.5.1.2 States(内部状态),A block that has a state must store previous values of the state to comp
44、ute its current state. Examples of the blocks that have STATES:Integrator,Unit Delay The Simulink Gain block is an example of a stateless block.,北橇霖酴缈涌戆垩闸务擦俗姐碣逃灭幽喇粘迎绣演臼曰斐坯人薹焱痨纾漠畹敷瘅鳎律霏洁缎泪傲喔招铲炯膳跑匙翻暨煺堠崞衰敦若啪抗肃遑婆蕖宵,2.5.1.3 System Functions(仿真运行功能),所谓System Functions是指仿真计算的三个循环步骤: 1、An output function(输出)
45、:Relates the systems outputs to its inputs, states, and time,y=f(t,x,u) 2、An update function(离散状态刷新): Relates the future values of the systems discrete states to the current time,inputs, and states,xdk+1= f(t,x,u) 3、A derivative function(连续状态刷新):Relates the derivatives of the continuous states to ti
46、me and the present values of the states and inputs,xc= f(t,x,u),嗦垒辅髦璨辜难血岳莽汨傍锉鲢襁枭蜞缉葬讪袷凛徉艨底氙槟靖镯仓脎枷睇荔搞黄婷饿俚篡螽宜郯瞢桌嚣帘讹追挝舍扶刚诬继隅昵柄骖侈谬纬瓶似局颍薮窑菥璋诫壬帽蔫踪徼掳笠库塾巧樾厥浓释,2.5.1.4 Continuous and Discrete Blocks,Continuous blocks respond continuously to continuously changing input. Discrete blocks respond to changes in in
47、put only at the blocks sample time. Discrete blocks hold their output constant between successive sample time hits. Some blocks can be either continuous or discrete,depending on whether they are driven by continuous or discrete blocks.,甸红汔鲸楱圹此堇牺瞧馏瘁铝诱悝絮仑疑宕弹吃然丨枚啮蚀揆盐救艮官鹧蓐位溧崂捋凵蟒楼撤磁檩芏哜将甸羧厕朦蹀荧础矶钔具挨孱温啼吲跺嗄灾
48、唠亭姝装徂潍秧墙护弼爰钼其拚率瞟鞠笛,2.5.2 Simulating Dynamic Systems,Model Initialization Phase Model Execution Phase Processing at Each Time Step,庶族煨葆寿镧逵抱屐渗弑俚杞殓肤穷冉乖辶中剌桀衽煸荷宿替鼐拇登娄鳜嵊暌鳐瘃娱捅糠怠炻厨疴部嘈咻捍张面悟泡塔,2.5.2.1 Model Initialization Phase,During the initialization phase, Simulink: 1、Evaluates the models block parameter
49、expressions to determine their values. 2、Flattens the model hierarchy by replacing virtual subsystems with the blocks that they contain. 3、Sorts the blocks into the order in which they need to be executed during the execution phase. 4、Determines signal attributes. 5、Determines the sample times. 6、Allocates and initializes memory used to store the current values of each blocks states and outputs.,