Matlab總體架構_第1頁
Matlab總體架構_第2頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、RealTimeWorkshop實時仿真研究與應用MATLAB工具RTW可以從圖形模型生成ANSIC源代碼.下載此代碼在實時操作系統(tǒng)中(比如windows)運行可以實現(xiàn)實時仿真。對于仿真平臺來說,關鍵的是提供高速運算、實時進程管理、高精度時間函數以及豐富靈活的仿真控制框架。而通用操作系統(tǒng)Windows不是實時操作系統(tǒng),不能提供嚴格的實時支持。MATLAB利用組件Simulink可以進行控制領域中模型的設計和仿真運行,但缺少對實時仿真的支持。MATLAB的工具RealTimeWorkshop從Simulirtk的圖形模模型中可以創(chuàng)建程序生成的代碼可以在Pc機、數寧信號處理機、九操作系統(tǒng)機器的微控

2、制器以及商業(yè)化的實時操作系統(tǒng)(RTOS)等環(huán)境運行。Real一TimeWorkshop(RTW)簡介RTw是和Matlab、Simulink一起使用的一個工具,它可以直接從Simulink模型生成代碼并且自動建立可以在不同環(huán)境下運行的程序,這些環(huán)境包括實時系統(tǒng)和單機仿真.RTW能夠應用的場合十分廣泛.1) 實時控制:可以使用Matlab和Simulink設計控制系統(tǒng),并且從建立的圖表模型生成代碼,編譯并載入它們到目標硬件.2) 實時信號處理:可以使用Matlab和Simulink設計信號處理算法,同樣可以從模型生成代碼,編譯和載入它們到目標硬件.3) 生成可插入到其他仿真程序的便攜c代碼:非缺

3、省情況下,根據用戶的設置可以生成如下代碼:(1) Ada代碼:從Simulink模塊生成Ada代碼,要求用戶安裝Real一TimeWorkshopAdaCoder.(2) 實時程序:將代碼轉換為適合硬件運行的實時程序.對應代碼被設置為和一個外部時鐘源相連接,且以用戶設定的固定采樣速率運行.(3) 高性能單機仿真程序:將生成的代碼和普通實時系統(tǒng)目標文件一起使用,為單機仿真生成可以執(zhí)行的程序.接觸Matlab10年后的一個總結,隨時使用Matlab要掌握的一些要點閱讀目錄1.前言2.Matlab的簡單介紹3.Matlab開發(fā)環(huán)境介紹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的主要人群是學生和科研單位,商業(yè)環(huán)境的使用我見過一些,但很少。就不做推測和評價了。Matlab如何如此受歡迎,我總結是4個方面:1. 高效的數值計算功能。

7、這一點是出類拔萃,目前其他編程語言以及其他類似的數學軟件無可替代;2. 完備的計算結果和編程可視化功能。這一點同樣是出類拔萃,無可替代;我的博客有Matlab專欄,大部分是C#調用Matlab進行混合編程的問題,每一年都有大量的學生和其他工程人員有這個需求:直接調用Matlab的Figure。潛入到WinForm中去。這和Matlab的結果優(yōu)秀的可視化功能密不可分;3友好完善的編程開發(fā)環(huán)境,以及接近數學表達式的自然化m語言。非常易于學習和掌握;Matlab軟件就是一個編程開發(fā)環(huán)境,自帶的m語言簡單易用,有編程開發(fā)經驗的人應該是非常容易掌握的;4.功能豐富的應用工具箱與Help系統(tǒng),目前Matl

8、ab的工具箱總數已經超過80個,覆蓋了數學,統(tǒng)計,仿真,電子,生物信息學,金融,測試等等各個方面。與其說Matlab強大,不如說它的工具箱強大,每一個工具箱都包括與涵蓋了行業(yè)內經典的一些算法和處理方法。省去了大量的麻煩,所以對于科研來說,快速的驗證自己的想法,實現(xiàn)算法并進行測試?;氐侥夸浫绻褂肕atlab,安裝Matlab必不可少,下面是Matlab的主界面,下面介紹幾個主要窗口的作用。本文使用的是Matlab2012a,其他版本如果是RibbonUI,除了菜單不一樣,窗口也大概類似的。M-adjih8匚7'INgmeGurjenERIM臼sK-MiLjJNVERSE.m出maEl

9、ati.mflil:T>陽換侶IgjMHimPBJHflTlAfeJLWCfiBnI-I色T申F翊Linp。M*-HnbF-prClirpDcmnMnlabntH內養(yǎng)雖訝屁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:創(chuàng)建1個都為0的矩陣;ones:創(chuàng)建1個都為1的矩陣。參數可以是多維的,例如zeros(2,3).5size:可以計算矩陣的大小,同樣相關的還有l(wèi)ength,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矩陣操作的語法,太靈活了,掌握幾個基本的就可以完成很多工作了?;氐侥夸?.前面已經提到Matlab最重要的一點強大的數值計算功能,不僅體現(xiàn)其函數庫的強大,更重要的是其操作語法的靈活性。隨便找一本Matlab的編程入門書籍,肯定有這方面的介紹。其實矩陣操作的靈活性,強大到以至于我不敢看,日常只要掌握幾個基本的操作就可以做很多事情了。特別在這里特別介紹一下,可以給你提高不少效率。51在編寫各種算法的時

16、候,經常要對矩陣初始化。例如前面提到的zeros,one,等等都是產生矩陣的方法,同樣還有其他的產生對角矩陣等方法。這里特別要提到的是產生數據或者等差數列的方法。例如a=1:10;%產生1-10的步長默認為1的等差數列;b=0:0.1:1;%產生0-1的步長為0.1的等差數量;是不是很簡潔高效。在其他編程語言,可能自己要封裝一個方法了。然后來調用,但是在matlab里面,這一切都簡化了。52在matlab中,數組或者叫做矩陣是可以任意擴充的,不需要其他,同樣對矩陣的變化易如反掌,不需要那些for循環(huán)來進行??纯磶讉€例子,管中窺豹,大家以此類推: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就不多說了。這里只是冰山一角?;氐侥夸?編程語法看完上面的語法,有沒有心動?那接下來看看matlab的m語言的一些基本語法。我們可以在命令行窗口做一些簡單的測試,但并不適合于開放。當我們要完成一個完整的邏輯時,那就要用到m文件編輯器了。打開編輯器,界面如下,你就可以寫了。這個開發(fā)環(huán)境也很強大,可以斷點調試,分步執(zhí)行。這是一篇總結性的文章,我身邊也沒有了matlab書籍,所以想到哪寫到哪吧。P“|file|£d«嘗咼-

19、9;Editorelo-pMent'.O5HrlpVcdcKmejns-nnIc±£d£eHTsiol-sDmhuqCsktopi*聯(lián)診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中變量名大小寫敏感的,官方的函數里面也沒有所謂的命名規(guī)則,基本都是小寫開頭,習慣就好了2. 注意,如果一行語句結束,后面不加;號,就會直接在CommandWindow顯示變量的值,加分號就只顯示在Workspace了,在命令行窗口也是這樣的,不信你可以試一下,a=100;和b=100的區(qū)別3. matlab中,注釋的符號是%4. 變量無需定義,你可以給它一個空值,在使用的時候再賦其他值。它的長度也不是固定的,你可以按你想象進行增加。5. matlab的數據類型中,個人認為比較變態(tài)的是字符和元胞,元胞數組是一

22、個大雜燴,可以容納各種復雜的類型,而字符類型,踩過不少坑,每次都轉不過彎來。這里分享一下。matlab拼接字符串路徑或者數組,不是我們其他編程語言想象的那樣哦。用+就可以解決。需要這樣:'ab''cde'num2str(2)%注意中間有空格,結果:abcde26. 雖然矩陣操作,很靈活,大部分的都可以直接一句話完成,但免不了還是要用循環(huán)的。matlab也有for,while語法。需要注意的是,每一層的for或者while都要對應end才行。7.在matlab中,現(xiàn)在也支持面向對象編程,但我不會,使用Matlab暫時也只是用用函數,面向過程的編程啊。面向對象編程的

23、使用如果大家有興趣可以去找一下相關資料啊。matlab最常用的還是函數,和其他語言的方法類似。但是matlab的函數沒有靜態(tài)方法和實例方法之分,總的來說,都是靜態(tài)的吧,直接調用。編寫函數使用的關鍵字是function,輸入和輸出參數可以是多個,例如functionr1,r2,r3=testfun(p1,p2,p3)這里有一個注意:函數是不能直接運行的,大家可以寫一個m文件調用你寫的函數就可以了,這個有編程經驗的應該都懂,我要說的是,在c#中調用matlab的函數的時候,必須是function才能夠被編譯和調用,非function是不支持的哦?;氐侥夸涬m然會Matlab做很多事情,但現(xiàn)在我已經完

24、全脫離它了,剛開始很多不習慣,比如很多數學函數要自己寫,自己去發(fā)掘,但通過慢慢積累,并發(fā)掘開源的資源,我使用了Math.NET組件來替代了它的數值計算部分,雖然語法沒那么優(yōu)雅,但是功能上沒問題了。至于其他的功能組件,比如統(tǒng)計,數據挖掘等工具箱,也有相應的開源組件來完成,實在找不到的,自己根據算法來完成,其實也不難,所以在這個過程中,使用C#的能力也越來越強。這并不是說Matlab不好,Matlab目前最大的問題,從實際應用上來說,主要有幾個確定:1大的不能再大的MCR運行時,曾幾何時,.NET幾十M的.net環(huán)境,就讓人受不了,更加不用說Matlab的MCR,300多M了。安裝后超過1G。2在

25、與其他平臺交互應用還不太靈活與方便,例如在C#中調用Matlab的m函數,雖然現(xiàn)在支持還不錯,但效率和使用門檻還是有一定的差距,不能普及;3雖然Matlab在分布式計算,效率以及部署方面花了很大精力,也越來越好用,但是價格讓人望而卻步。有幾個工具箱我都沒找到破解版。無法試用;這方面是一個硬傷吧,別說學習了,即使買了,招幾個這樣的人都是個難事。4.Matlab的資源太少,目前主流的開源項目托管平臺,Matlab項目寥寥無幾,雖然官方有一個開源的交流論壇,但人氣太低,而且也是英文的,沒什么用。加上國內的研究人員,各自為戰(zhàn),基本不分享一些寫過的Matlab代碼,所以后人前仆后繼,每天都在寫重復的代碼

26、。每一次安裝系統(tǒng)的時候,總是莫名其妙的要把Matlab給安裝上去,但貌似很少打開,這個月還打開了幾次。希望不是終點,Matlab的確是一個好的工具。最后說一下Matlab的幫助系統(tǒng)吧:在若干年前微軟的MSDN還有離線版的時候,它應該是最好的幫助系統(tǒng)吧。但現(xiàn)在MSDN好像都不包括在VS的安裝包里面了,離線版也沒有多大的意義。但是Matlab一直在這樣做,這也是它強大的原因之一。所以的東西都可以從幫助文檔中得到。但前提你得會基本的英文,這也是一大硬傷吧,沒有中文版,不過想想也可怕,這么多文章翻譯為不同版本,工作量得多大。以前有論壇翻譯這些文檔中的函數,但好像被官方叫停了,版權原因。悲哀,人家給你免

27、費普及做廣告,居然這樣。最后附上一張圖,曾經摸爬打滾過的help系統(tǒng):"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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論