Matlab总体架构_第1页
Matlab总体架构_第2页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RealTimeWorkshop实时仿真研究与应用MATLAB工具RTW可以从图形模型生成ANSIC源代码.下载此代码在实时操作系统中(比如windows)运行可以实现实时仿真。对于仿真平台来说,关键的是提供高速运算、实时进程管理、高精度时间函数以及丰富灵活的仿真控制框架。而通用操作系统Windows不是实时操作系统,不能提供严格的实时支持。MATLAB利用组件Simulink可以进行控制领域中模型的设计和仿真运行,但缺少对实时仿真的支持。MATLAB的工具RealTimeWorkshop从Simulirtk的图形模模型中可以创建程序生成的代码可以在Pc机、数宁信号处理机、九操作系统机器的微控

2、制器以及商业化的实时操作系统(RTOS)等环境运行。Real一TimeWorkshop(RTW)简介RTw是和Matlab、Simulink一起使用的一个工具,它可以直接从Simulink模型生成代码并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真.RTW能够应用的场合十分广泛.1) 实时控制:可以使用Matlab和Simulink设计控制系统,并且从建立的图表模型生成代码,编译并载入它们到目标硬件.2) 实时信号处理:可以使用Matlab和Simulink设计信号处理算法,同样可以从模型生成代码,编译和载入它们到目标硬件.3) 生成可插入到其他仿真程序的便携c代码:非缺

3、省情况下,根据用户的设置可以生成如下代码:(1) Ada代码:从Simulink模块生成Ada代码,要求用户安装Real一TimeWorkshopAdaCoder.(2) 实时程序:将代码转换为适合硬件运行的实时程序.对应代码被设置为和一个外部时钟源相连接,且以用户设定的固定采样速率运行.(3) 高性能单机仿真程序:将生成的代码和普通实时系统目标文件一起使用,为单机仿真生成可以执行的程序.接触Matlab10年后的一个总结,随时使用Matlab要掌握的一些要点阅读目录1.前言2.Matlab的简单介绍3.Matlab开发环境介绍4.那些常见的命令5.不得不说的矩阵操作6.编程语法7.关于Mat

4、lab我想说的话不记得上一次写超过20行的matlab程序是什么时候了,大概是2013年吧,那个时候写过2篇文章,实际用到了一些matlab的内容,超过200行的matlab程序应该要追溯到2011年了,最近为了帮助网友解决我博客一篇文章的问题,把自己2011年的matlab翻出来,感触颇多,一言难尽,看到昔日熟悉的代码,我居然能理解,然后还能修修改过,感觉好多年没用了,连基本函数都忘记了,还是碰到问题还是会写会改,这里面也说明了编程不简单是一个记忆和经验的问题,更重要的是学习的方法和解决问题方法的问题。所以决定写这篇文章把我说认识的Matlab的东西写出来,也许再过一些年,我将老去,也不会再

5、用Matlab了,这样的话,算是给10年Matlab使用之路一个终结吧。本站Matlab技术文章目录【目录】Matlab和C#混合编程文章目录本文原文地址:接触Matlab10年后的一个总结,随时使用Matlab而掌握的一些要点回到目录准确的说这篇文章不是给完全的编程新手,特别是以前没有过一定编程经验的人准备的。文章的适合对象是:已经有一定编程基础的人,如果你想用Matlab来快速的完成算法验证,以及科研学术研究等。文章的范围很大,信息量很大,个别问题新手不是很理解,请自行百度。至于有编程经验的,本文提到的大部分内容应该是可以理解的,根据思路,打开Matlab软件也应该是可以选择的。本文选择的

6、Matlab版本是:2012a,个人觉得这个版本一直都还不错吧。新的版本虽然菜单中文化,但那个UI真是丑爆了,无力吐槽,也没必要换。另外,这里提醒广大Matlab使用者,对于80%人来说,低版本真的够了,没必要追求太高,特别是那些连破解或者工具箱选择都不知道啥意思的,选择一个低版本,麻烦事情可能会更少。新版本的破解很多不全面,自己安装的时候要注意。很多人碰到这个问题,工具箱都没安装,你要找函数,怎么找得到。回到目录在国内,目前使用Matlab的主要人群是学生和科研单位,商业环境的使用我见过一些,但很少。就不做推测和评价了。Matlab如何如此受欢迎,我总结是4个方面:1. 高效的数值计算功能。

7、这一点是出类拔萃,目前其他编程语言以及其他类似的数学软件无可替代;2. 完备的计算结果和编程可视化功能。这一点同样是出类拔萃,无可替代;我的博客有Matlab专栏,大部分是C#调用Matlab进行混合编程的问题,每一年都有大量的学生和其他工程人员有这个需求:直接调用Matlab的Figure。潜入到WinForm中去。这和Matlab的结果优秀的可视化功能密不可分;3友好完善的编程开发环境,以及接近数学表达式的自然化m语言。非常易于学习和掌握;Matlab软件就是一个编程开发环境,自带的m语言简单易用,有编程开发经验的人应该是非常容易掌握的;4.功能丰富的应用工具箱与Help系统,目前Matl

8、ab的工具箱总数已经超过80个,覆盖了数学,统计,仿真,电子,生物信息学,金融,测试等等各个方面。与其说Matlab强大,不如说它的工具箱强大,每一个工具箱都包括与涵盖了行业内经典的一些算法和处理方法。省去了大量的麻烦,所以对于科研来说,快速的验证自己的想法,实现算法并进行测试。回到目录如果要使用Matlab,安装Matlab必不可少,下面是Matlab的主界面,下面介绍几个主要窗口的作用。本文使用的是Matlab2012a,其他版本如果是RibbonUI,除了菜单不一样,窗口也大概类似的。M-adjih8匚7'INgmeGurjenERIM臼sK-MiLjJNVERSE.m出maEl

9、ati.mflil:T>阳换侶IgjMHimPBJHflTlAfeJLWCfiBnI-I色T申F翊Linp。M*-HnbF-prClirpDcmnMnlabntH内養虽訝屁OOTe«Surradtl勺18腑11电卓IM-ilX5tarL:吐s谄to*我MATLB肥亡1加才一、1.IT询File-iEM"DtJjugParallelD«ktGpWindgmlelp/kTjidM<w|CurerrtFalrferC:BalcDevahpMwije|)ShcxtrtfHil*<dw恤Addj|While'sNewfiLl®N-ewto

10、WAFLAB*Wjtcht辰ee&Uemos-a佬詔Gert'-出|Jf辺!JLammuidVindovr上面就是Matlab的主界面,我用的是2012a版本,新版本2013后可能有些改变,感觉更丑。还是这个习惯。但大概功能都差不多。看看每个部分的功能吧,菜单栏暂时就不说了,看名字一般都能懂。具体说说上图各个部分的作用。1. CurrentFolder:当前路径。是当前matlab工作文件夹的路径,这个一般启动改好后,不会变动,作用不大,但有时候找文件用得上;这里会加载你经常使用的Matlab目录,可以通过下拉箭头快速切换不同的Matlab工作路径;2. CurrentFold

11、er:也是当前的工作文件夹的文件显示,这里显示文件夹的所有资源,比较好懂,需要打开文件的时候,双击对应m文件就可以了;3单个m文件或者函数,点击之后,会在4中显示包含的函数,就比如VS显示类中的属性,方法之类的,可以了解文件结构;4是3中选择文件中包括的函数,不用打开文件夹,就可以看到m文件中的函数结构;5.CommandWindow主窗口,也就是输入命令的地方,最最重要的地方吧,做一些简单的测试,学习命令的时候都可以在这里面进行,不过习惯后更喜欢用m文件,习惯就知道了;6WorkSpace,工作变量空间,主要是显示当前matlab中存在的变量的值,包括变量名称,值,如果是数组,会显示最大,最

12、小值,这个地方主要是调试程序用的,相当于VS中加断点后的局部变量的值,只不过这里显示更加直观,非常有用。7CommandHistory,历史命令窗口。这里有一个小技巧,就是你在命令窗口输入的命令,这里都会显示,而且你还可以用小键盘的,上下键来直接跳到前面的命令,测试的时候也更加方便;回到目录4.经常使用Matlab的命令或者进行一些简单的测试,掌握和知道一些常见的命令是很有必要的,下面这些命令如果记不住,可以根据功能百度,找到对应的函数,再用,其实很快。熟练之后,也就30秒钟的事情,多了,也就记住了。1. clear:清除内存变量和函数,也就是把Workspace的变量给清空;2. clc:清

13、楚当前Matlab命令窗口的内容;相当于清楚屏幕吧,重新开始,简洁一点,注意clc是不清楚变量的。一般在编写m文件的时候,不是函数的话,前面一般都要加上clear;clc;目的就是在m文件运行的时候,把内存和屏幕都清空,以免同名称的变量影响以及屏幕容易观察;3. help:这也是最重要的一个函数吧。在想要知道某个函数的相关说明的时候,可以使用help函数名来获取,当然也可以打开帮助文档。不过这种方法是比较快的。4zeros:创建1个都为0的矩阵;ones:创建1个都为1的矩阵。参数可以是多维的,例如zeros(2,3).5size:可以计算矩阵的大小,同样相关的还有length,size可以计

14、算不同的维上的大小,例如size(A,1).6.rand:随机数生成器,可以直接使用生成任意纬度的矩阵,例如rand(2,3),也是一个经常用的东西;6.plot:绘制图像的操作,具体格式可以参考帮助。操作应该非常频繁,做科研的时候,经常要看趋势,绘图在matlab是非常常见的一件事情。还有一个subplot函数是将一个figure分割为多个块来操作。想想自己在C#中用mschart绘图,也是醉了。不过仍然得坚持,这些年来为什么抛弃matlab,所有matlab可以干的事情都拿C#来干,是一个很远的话题,以后有机会再说吧。7figure,holdon:在使用plot绘图的时候,默认都是在fig

15、ure上面,figure可以新建一个空白图像,同时还可以使用holdon在同一个figure上面绘制多条曲线;最重要的几个函数就介绍在这里吧。要掌握matlab的核心语法,还得看一下基本的matlab矩阵操作的语法,太灵活了,掌握几个基本的就可以完成很多工作了。回到目录5.前面已经提到Matlab最重要的一点强大的数值计算功能,不仅体现其函数库的强大,更重要的是其操作语法的灵活性。随便找一本Matlab的编程入门书籍,肯定有这方面的介绍。其实矩阵操作的灵活性,强大到以至于我不敢看,日常只要掌握几个基本的操作就可以做很多事情了。特别在这里特别介绍一下,可以给你提高不少效率。51在编写各种算法的时

16、候,经常要对矩阵初始化。例如前面提到的zeros,one,等等都是产生矩阵的方法,同样还有其他的产生对角矩阵等方法。这里特别要提到的是产生数据或者等差数列的方法。例如a=1:10;%产生1-10的步长默认为1的等差数列;b=0:0.1:1;%产生0-1的步长为0.1的等差数量;是不是很简洁高效。在其他编程语言,可能自己要封装一个方法了。然后来调用,但是在matlab里面,这一切都简化了。52在matlab中,数组或者叫做矩阵是可以任意扩充的,不需要其他,同样对矩阵的变化易如反掌,不需要那些for循环来进行。看看几个例子,管中窥豹,大家以此类推:data=rand(4,4)%初始化1个10*10

17、的随机矩阵a=data(:,1)%取data的所有行,第1列b=data(:,1,3)%取所有行,第1,3列c=data(2,3,1,2)%取第2,3行,以及1,2列看下面的运行结果,比较直观:CommandWindow>7-dats.=rand:,4j4、data042130.0.67170.6555C.915700257D.7577Q1715079-230.84910.742-10.TOGO£L359-SD.34003922D.031B>?a=data':.1)O4210C.5157Q.73220.9555AYb二:=1;3;0.42ISC.S7S70.315

18、7.75770-7922074310.95950.3922c=data(2:Li)O.5157O.Q3570.7322:.3431其他还有更多,如find就不多说了。这里只是冰山一角。回到目录6编程语法看完上面的语法,有没有心动?那接下来看看matlab的m语言的一些基本语法。我们可以在命令行窗口做一些简单的测试,但并不适合于开放。当我们要完成一个完整的逻辑时,那就要用到m文件编辑器了。打开编辑器,界面如下,你就可以写了。这个开发环境也很强大,可以断点调试,分步执行。这是一篇总结性的文章,我身边也没有了matlab书籍,所以想到哪写到哪吧。P“|file|£d«嘗咼-

19、9;Editorelo-pMent'.O5HrlpVcdcKmejns-nnIc±£d£eHTsiol-sDmhuqCsktopi*聯诊0得习|科*血比厅IX)+|+丁*|風囲Q1 -de;clear;2 -load'matlab.maV)%iDSfeH据4 -NO=1;紗l赛少列开贻的数据进行预测分类5 N仁s血(da也J);%所有IS据的行数6 -data=data(NON1,)i日说瓯鹉尋测试的樹据7 %楼改遠里的厲性编邑可世测试不同麗性的准确率.也可以多示3 黑如果测试所有葛性.要23人5QTQ9J0第例是身份信尉没有用9 -加a1訪妣匚7

20、Z9W汪寻修旳嵐垃的时候.B1±6t呈第序山绪代碼的应®<7*屁理&性10 -optsstatsetfDjsplay:千们曲);嗚控制选项11 %这-Tkmeans西議是ms曲b日带的聚真対祈函数*功能很輕大1Z%曲初为勞吩真的级据砂汁类的主别凱本文口有2卷后面首琪的槪圮is-hdxPctf5,result,D=kmeans<dat51(2,.uDistanceycit.%选择的距离的卄篡方式£5OpiiQns1opts);%控制选应搭鹉m旳阳碍助汩西回的蹴是各个属牲的漏響聚粪中心1713唏dx中和2貝伸代表哪一奘要很据实际算弹的送行判卧有时候

21、1代表艮性.肓时贾代表119%幄掲本文的梦取计事得到1代表悪性2焊艮性1. matlab中变量名大小写敏感的,官方的函数里面也没有所谓的命名规则,基本都是小写开头,习惯就好了2. 注意,如果一行语句结束,后面不加;号,就会直接在CommandWindow显示变量的值,加分号就只显示在Workspace了,在命令行窗口也是这样的,不信你可以试一下,a=100;和b=100的区别3. matlab中,注释的符号是%4. 变量无需定义,你可以给它一个空值,在使用的时候再赋其他值。它的长度也不是固定的,你可以按你想象进行增加。5. matlab的数据类型中,个人认为比较变态的是字符和元胞,元胞数组是一

22、个大杂烩,可以容纳各种复杂的类型,而字符类型,踩过不少坑,每次都转不过弯来。这里分享一下。matlab拼接字符串路径或者数组,不是我们其他编程语言想象的那样哦。用+就可以解决。需要这样:'ab''cde'num2str(2)%注意中间有空格,结果:abcde26. 虽然矩阵操作,很灵活,大部分的都可以直接一句话完成,但免不了还是要用循环的。matlab也有for,while语法。需要注意的是,每一层的for或者while都要对应end才行。7.在matlab中,现在也支持面向对象编程,但我不会,使用Matlab暂时也只是用用函数,面向过程的编程啊。面向对象编程的

23、使用如果大家有兴趣可以去找一下相关资料啊。matlab最常用的还是函数,和其他语言的方法类似。但是matlab的函数没有静态方法和实例方法之分,总的来说,都是静态的吧,直接调用。编写函数使用的关键字是function,输入和输出参数可以是多个,例如functionr1,r2,r3=testfun(p1,p2,p3)这里有一个注意:函数是不能直接运行的,大家可以写一个m文件调用你写的函数就可以了,这个有编程经验的应该都懂,我要说的是,在c#中调用matlab的函数的时候,必须是function才能够被编译和调用,非function是不支持的哦。回到目录虽然会Matlab做很多事情,但现在我已经完

24、全脱离它了,刚开始很多不习惯,比如很多数学函数要自己写,自己去发掘,但通过慢慢积累,并发掘开源的资源,我使用了Math.NET组件来替代了它的数值计算部分,虽然语法没那么优雅,但是功能上没问题了。至于其他的功能组件,比如统计,数据挖掘等工具箱,也有相应的开源组件来完成,实在找不到的,自己根据算法来完成,其实也不难,所以在这个过程中,使用C#的能力也越来越强。这并不是说Matlab不好,Matlab目前最大的问题,从实际应用上来说,主要有几个确定:1大的不能再大的MCR运行时,曾几何时,.NET几十M的.net环境,就让人受不了,更加不用说Matlab的MCR,300多M了。安装后超过1G。2在

25、与其他平台交互应用还不太灵活与方便,例如在C#中调用Matlab的m函数,虽然现在支持还不错,但效率和使用门槛还是有一定的差距,不能普及;3虽然Matlab在分布式计算,效率以及部署方面花了很大精力,也越来越好用,但是价格让人望而却步。有几个工具箱我都没找到破解版。无法试用;这方面是一个硬伤吧,别说学习了,即使买了,招几个这样的人都是个难事。4.Matlab的资源太少,目前主流的开源项目托管平台,Matlab项目寥寥无几,虽然官方有一个开源的交流论坛,但人气太低,而且也是英文的,没什么用。加上国内的研究人员,各自为战,基本不分享一些写过的Matlab代码,所以后人前仆后继,每天都在写重复的代码

26、。每一次安装系统的时候,总是莫名其妙的要把Matlab给安装上去,但貌似很少打开,这个月还打开了几次。希望不是终点,Matlab的确是一个好的工具。最后说一下Matlab的帮助系统吧:在若干年前微软的MSDN还有离线版的时候,它应该是最好的帮助系统吧。但现在MSDN好像都不包括在VS的安装包里面了,离线版也没有多大的意义。但是Matlab一直在这样做,这也是它强大的原因之一。所以的东西都可以从帮助文档中得到。但前提你得会基本的英文,这也是一大硬伤吧,没有中文版,不过想想也可怕,这么多文章翻译为不同版本,工作量得多大。以前有论坛翻译这些文档中的函数,但好像被官方叫停了,版权原因。悲哀,人家给你免

27、费普及做广告,居然这样。最后附上一张图,曾经摸爬打滚过的help系统:"HelpiEHr11誹tfrnjS专jpEsH*SB昭如tlWp*7MrtTLAnfUiriiuuitiiFDulriImirlrindFefA«Cc«ntB<rllrf-srrflResultsNcia-Efn5lflJlnbor:-$沁丁曲帀尿制円0EP07Lw乜QiekITilfiiD«vle|3HdrtKEfw-irrmni:sM*ih#fwu±kEIDiliAnihMiaPragrjpnnrang:Fijndame-rrti5ObjH-l"QriirlHdPrt)Qfan1rnrX己pphictVihitlbwicn CreirfingbriipkdUmfEfTtedBCTSHandleGraphicDh?de£kcE<-r'馬册rniIn仙Mu"* C/Ctt朋血Fortr-nnAF1RefcrcrE间ARirinkwii>11.EMBrrq«!JjdbfemCL右-JR«elBH*e夕疋口匚I喪isBreratiDntroinMXTUifi»i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论