ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:412.88KB ,
资源ID:7644961      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7644961.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自定义模块的处理.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

自定义模块的处理.docx

1、自定义模块的处理1. 自定义模块库简介下述方法通过回调函数建立模块库1 创建模块库:Library12 创建模块库:Library23 在Library1中创建子系统,删除里面的输入和输出,将改子系统通过回调函数指向Library2,则Library2成为了Library1的字库。若要创建多个字库,在Library1中创建多个子系统即可,每个子系统连接其引用库。上述即是自定义模块库的常用方法。Simulink本身自有模块组织模块库的方法和其类似,但又不同,有待于进一步研究。2.自定义模块并添加入库列表两种创建库模块的方法:1.创建子系统并封装为一个模块的形式。2.创建S函数,封装为模块形式。仅

2、叙述方法一:利用子系统创建通过子系统创建模块的形式比较简单。详解如下也可以利用下述方法将常用模块集中在一起,将创建的库文件添加入Matlab的Simulink库列表。1、创建库文件:打开Simulink Library Browser窗口。要建立Simulink库文件,首先启动Simulink工作窗口,单击菜单栏【File】下的【New】选项,选择【library】选项, 打开一个新的Library窗口界面,此时,用户可以将自己需要添加的一些模块加入到新的窗口中。然后保存为Own_efinition.mdl(所需要定义的库文件名称)。这样,就建立了一个 自定义的库文件。2、在Matlab路径下

3、创建存放库文件的路径,也即自定义的模块库在Library Browser下的显示位置。注意在Matlab中,每一个模块库文件所在的路径必须不同。创建的Maltab路径是:D:MATLABR2011atoolboxSimulinkMyLibrary(根据自己的Matlab安装路径来确定),其中MyLibrary为自定义的文件夹。3. 将第一步中建立的库文件拷贝到新建的Matlab路径下。在Matlab主窗口的【File】菜单栏下选择【Set Path】选项,然后单击【Add Folder】按钮,将新建的 路径添加进来,然后保存(Save),退出(Close)。4、要显示自定义的模块库,还需要拷贝

4、slblocks.m函数到新建的路径下。在Matlab的命令窗口中输入: which(slblocks.m, -all) pen(D:MATLABR2006atoolboxSimulinkblocksslblocks.m) 这样就可以打开slbocks.m文件模板,为了将自定义的模块库显示在Library Browser窗口下,需要对该程序进行修改。先把slbocks.m文件拷贝到自定义库文件(打开该模板文件)同一目录下(即刚才创建的路径),然后打开该文件进行如下修改(红色为所作修改),并保存:略。5、再打开Simulink Library Browser,按F5刷新,即可看到自定义的模块库,

5、展开后可以看内部的自定义模块。那么用户可以方便地进行拖放模块,就可以使用 自定义的封装模块了。如果还要在新建的模块库下面创建子模块库,需要把Subsystem模块加入到模块库中,打开Subsystem模块,删除所有内容(ports等元件),添加自己创建的模块 保存即可,然后重新打开Simulink Library Browser,按F5刷新,即可看到自定义的模块库和字模块库。3.自定义模块库(同2,详述)在MATLAB开发环境中,Simulink仿真平 台可以建立用户自定义的库文件,并将它们显示在Library Browser窗口下,方便用户进行模块的操作。用户可以将一些平时使用比较频繁,或者

6、自己建立的一些封装子模块集中在一块,方便使用。要建立 Simulink库文件,首先启动Simulink工作窗口,单击菜单栏【File】下的【New】选项,选择【library】选项,打开一个新的 Library窗口界面,此时,用户可以将自己需要添加的一些模块加入到新的窗口中。然后保存为所需要定义的库文件名称。这样,就建立了一个自定义的库文 件。虽然按照上述的方法,将一些用户常用的模块集中在一块,可以方便使用,但是,每次使用都需要打开自定义模块的窗口,而无法象Simulink仿真模块一样显示在Library Browser窗口下。按照以下步骤可以实现该功能:首先建立一个库文件,将自定义的封装模块

7、加入库文件中,保存文件,在这里,命名为: Converters.mdl。在Matlab路径下创建存放库文件的路径,也即自定义的模块库在Library Browser下的显示位置。注意在Matlab中,每一个模块库文件所在的路径必须不同。创建的Maltab路径是E:MATLAB2010toolboxsimulinksimulinkmyLibrary(根据自己的Matlab安装路径来确定),其中myLibrary为自定义的文件夹。将第一步中建立的库文件拷贝到新建的Matlab路径下。在Matlab主窗口的【File】菜单栏下选择【Set Path】选项,然后单击【Add Folder】按钮,将新建

8、的路径添加进来,然后保存(Save),退出(Close)。 要显示自定义的模块库,还需要拷贝slblocks.m函数到新建的路径下。在本演示中,模块库的名称为Converters.mdl,因此对应的slbocks.m文件为:function blkStruct = slblocks %SLBLOCKS Defines a block library. % Librarys name. The name appears in the Library Browsers % contents pane. blkStruct.Name = Own Definition sprintf(n) Libra

9、ry; % 模块库的显示名称% The function that will be called when the user double-clicks on % the librarys name. ; blkStruct.OpenFcn = Converters; %自定义的模块库名称% The argument to be set as the Mask Display for the subsystem. You % may comment this line out if no specific mask is desired. % Example: blkStruct.MaskDi

10、splay = plot(0:2*pi,sin(0:2*pi); % No display for now. % blkStruct.MaskDisplay = ; % End of blocks上述方法理论可以成功,采用blk.Struct.Name和blkStruct.OpenFcn的方式创建。按照以上的代码修改文件后,将其拷贝到自定义的路径下,这样在原来自定义的路径下就包含有两个文件,一个是自定义模块库文件,另一个则是slbocks.m文件。重新启动Matlab环境,启动Simulink仿真平台,可以发现在Simulink Library Browser窗口下增加了一个新的模块库,名称是

11、Own Definition Library,展开后,可以看到内部的自定义模块。4.自定义模块库(同2,详述)1.在Maltab安装路径某个地方创建一个文件夹。比如说在E:MATLABR2009atoolbox 路径下面创建了一个文件夹MyLib, 也就是E:MATLABR2009atoolboxMyLib2.把你的库文件( .mdl )文件 放到这个文件夹下面3.在这个文件夹下面创建一个 slblocks.m文件,基本内容如下function blkStruct = slblocks% Specify that the product should appear in the library

12、 browser% and be cached in its repositoryBrowser.Library = MyLibTest; % 你的库文件的名字 MyLibTest.mdlBrowser.Name= My Library; % 在Simulink库中显示的名字blkStruct.Browser = Browser;4.把这个文件夹及它的子文件夹添加的Matlab 路径当中去理论可以成功,通过Browser.Name和Browser.Library创建。5.这个时候,当你打开Simulink的时候,就会发现自己的库文件已经添加进去了5.自定义模块库(同2,详述)常常需要将自定义的

13、模块算法加入自定义的Library里,然后在Simulink Library Browser里显示,这需求很多人提过,网上也有一些资料,但是我都试过,不灵,然后本人通过help和探索,总结出了解决方案:1、首先新建一个Library,注意后缀名一定要是mdl,很多资料里都讹传将后缀名改成lib,这是错的,不知道大家伙为什么还要将错的东西传来传去。姑且将这个Library命名为jet.mdl。 2、然后在jet.mdl里加入一个自定义的模块算法(以subsystem封装,两边露出input和output),自定义这个subsystem为jet_func。 3、从您的Matlab目录下找到slbl

14、ocks.m这个文件,将其修改,修改内容如下(首先将它模板上原有的内容全删了):function blkStruct = slblocks blkStruct.Name=jetchang sprintf(n) Library;/这是命名这个Library在Browser上显示的名字,叫jetchang Library blkStruct.OpenFcn=jet;/这里将jet.mdl加入到jetchang的目录下4、之后新建一个文件夹叫jetchang,将jet.mdl和slblocks.m这俩文件放在这个文件夹里,最后将该文件夹的路径放到matlab的set path里。 5、关闭matla

15、b,重新打开,之后打开simulink library browser,您的jetchang Library就赫然在目了。 完毕。至于想添加其他功能或选项,参见help上述方法理论可以成功,通过blkStruct.Name和BlkStruct.OpenFfcn创建。6.自定义模块库(同1,详述)6.1.模块库的建立与修改 模块库的建立与模型model的建立类似,都是在File菜单栏中,只不过要选择Library而非Model,如下图: 然后再该Library中添加了两个模块,并存为名为Interpolation.mdl文件。如下图:注意:当模块库被保存后,模块库就自动被锁定,模块库中的模块都无

16、法修改,所以修改时需要Edit-Unlock Library来解锁方能修改。6.2.模块库中建子模块库 此处的目的是在HiNOC模块库中建立Interpolation子模块库(上一步已经建好了主体)。 首先建立一个模块库保存为HiNOC.mdl; 从simulink-Port&Subsystems中复制subsystem模块进HiNOC.mdl中,并改名为Interpolation,将模块内的内容(ports等元件)全部删除; 鼠标右键Interpolation模块,从弹出菜单中选中Block properties.选择弹出的对话框中callbacks分页,选择左边栏中的OpenFcn项,在右

17、边编辑已经建立的要包含的子库的文件名(本例中即Interpolation),此时再点击Interpolation的subsystem模块,就会发现此模块里面不再是“空”的了,这涉及到回调(callback)函数,以后再详细讨论。 此时Interpolation的subsystem模块中“不空”了6.3.添加模库至库列表 此步骤中欲将刚才建立的HiNOC.mdl模块库加入到simulink模块库列表中,就像系统的模块一样使用。 建立一文件夹(本例中命名为HiNOC),并将刚才建立的HiNOC.mdl,Interpolation.mdl等移动到此文件夹中,并将该文件夹加入到matlab的path(

18、matlab搜索路径,在File-Set Path中操作,有时还要在File-Preferrences中点击Update toolbox Path Cache)中; 在文件夹HiNOC中加入名为slblocks.m的文件(可从matlabroot/toolbox/simulink/blocks/slblocks.m中获得模板或者参考已安装的模块库中的slblocks.m文件的写法),此处的写法如下:c-sharp view plaincopyprint?1. functionblkStruct=slblocks2. %SLBLOCKSDefinestheblocklibraryforaspec

19、ificToolboxorBlockset.3. %SLBLOCKSreturnsinformationaboutaBlocksettoSimulink.The4. %informationreturnedisintheformofaBlocksetStructwiththe5. %followingfields:6. %7. %NameNameoftheBlocksetintheSimulinkblocklibrary8. %Blocksets&Toolboxessubsystem.9. %OpenFcnMATLABexpression(function)tocallwhenyou10. %

20、double-clickontheblockintheBlocksets&Toolboxes11. %subsystem.12. %MaskDisplayOptionalfieldthatspecifiestheMaskDisplaycommands13. %tousefortheblockintheBlocksets&Toolboxes14. %subsystem.15. %BrowserArrayofSimulinkLibraryBrowserstructures,described16. %below.17. %18. %TheSimulinkLibraryBrowserneedstok

21、nowwhichlibrariesinyour19. %Blocksetitshouldshow,andwhatnamestogivethem.Toprovide20. %thisinformation,defineanarrayofBrowserdatastructureswithone21. %arrayelementforeachlibrarytodisplayintheSimulinkLibrary22. %Browser.Eacharrayelementhastwofields:23. %24. %LibraryFilenameofthelibrary(mdl-file)toincl

22、udeinthe25. %LibraryBrowser.26. %NameNamedisplayedforthelibraryintheLibraryBrowser27. %window.NotethattheNameisnotrequiredtobethe28. %sameasthemdl-filename.29. %30. %Example:31. %32. %33. %DefinetheBlocksetStructfortheSimulinkblocklibraries34. %Onlysimulink_extrasshowsupinBlocksets&Toolboxes35. %36.

23、 %blkStruct.Name=Simulinksprintf(/n)Extras;37. %blkStruct.OpenFcn=simulink_extras;38. %blkStruct.MaskDisplay=sprintf(Simulink/nExtras);39. %40. %41. %Bothsimulinkandsimulink_extrasshowupintheLibraryBrowser.42. %43. %blkStruct.Browser(1).Library=simulink;44. %blkStruct.Browser(1).Name=Simulink;45. %b

24、lkStruct.Browser(2).Library=simulink_extras;46. %blkStruct.Browser(2).Name=SimulinkExtras;47. %48. %Copyright1990-2006TheMathWorks,Inc.49. %$Revision:1.20.2.10$50. %51. %NameofthesubsystemwhichwillshowupintheSimulinkBlocksets52. %andToolboxessubsystem.53. %54. blkStruct.Name=Simulinksprintf(/n)HiNOC

25、;55. %56. %Thefunctionthatwillbecalledwhentheuserdouble-clickson57. %thisicon.58. %59. blkStruct.OpenFcn=HiNOC;60. %61. %TheargumenttobesetastheMaskDisplayforthesubsystem.You62. %maycommentthislineoutifnospecificmaskisdesired.63. %Example:blkStruct.MaskDisplay=plot(0:2*pi,sin(0:2*pi);64. %Nodisplayf

26、orSimulinkExtras.65. %66. blkStruct.MaskInitialization=;67. x=exp(j*-45:-8:-215,-45/180*pi);68. x1=x*20+20+j*35;69. x2=-x*10+60+j*75;70. p_str=plot(,.71. mat2str(real(x1),2),mat2str(imag(x1),2),.72. 015,mat2str(real(x1(10:13),2),0,00,mat2str(imag(x1(10:13),2),0,.73. mat2str(real(x2),2),mat2str(imag(

27、x2),2),.74. 19403552404960,34556550706475,.75. 74.5706574,84.5808594,.76. 666570.571,86999791,.77. 7574798075,8194927981,.78. 74.573,8787,.79. -10,0,100,100);80. blkStruct.MaskDisplay=p_str;81. %82. %DefinetheBrowserstructurearray,thefirstelementcontainsthe83. %informationfortheSimulinkblocklibraryandthesecondforthe84. %SimulinkExtrasblocklibrary.85. %86. %Browser(1).Library=simulink;87. %Browser(1).Name=Simulink;88. %Browser(1).IsFlat=0;%Isthislibraryflat(i.e.nosubsystems)?89. Browser(1).Libr

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

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