久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

MATLAB學(xué)習(xí)心得體

時間:2019-05-12 12:57:12下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《MATLAB學(xué)習(xí)心得體》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《MATLAB學(xué)習(xí)心得體》。

第一篇:MATLAB學(xué)習(xí)心得體

MATLAB學(xué)習(xí)心得體

真正接觸matlab已經(jīng)一學(xué)期左右,我很喜歡matlab的簡單的語法,易于繪制圖形一開始就感覺跟變魔術(shù)一樣簡單的語句就會有精美的圖形這就更加讓我對他如癡如醉了,最先開始接觸是在大二參加數(shù)學(xué)建模時,一開始就被他所吸引(一個簡單的程序就可以繪制出精妙的立體圖形)真正認(rèn)識和了解他是在這學(xué)期的matlab課上這使得我有機(jī)會去進(jìn)一步了解和探索他了。他不但有很強(qiáng)的圖形繪制能力而且他其中包含的toolbox更是讓人用起來得心應(yīng)手這也使得我對他更加的感興趣。

首先我要說的是現(xiàn)今的MATLAB已全部采用C語言編寫,它既是一種編程環(huán)境,又是一種程序設(shè)計語言。在MATLAB中,以復(fù)矩陣作為基本編程單元,無須定義即可采用,且可隨時改變尺寸。在MATLAB中,表達(dá)式的書寫像在稿紙中演算一樣。提供20多個工具箱函數(shù)。易擴(kuò)展性是最重要的特征之一,友好的界面、易記的命令和簡便的操作??蓪語言編寫的程序移植進(jìn)來。

其次我想說的是matlab的help功能 help:最有效的命令其實,可以這樣說吧,如果離開matlab課本,我想我自己是基本上什么都不會.一遇到什么問題,通常我的第一反應(yīng)是:help它幫我解決了matlab學(xué)習(xí)中的許多困難與障礙所以在有不懂得地方第一個想到的就是他的help功能。

最后我也想說的是MATLAB真是一個好工具,也只能是一個好工具。它可以作為一個平臺,承載知識和算法,感謝MATLAB帶給我的新思維,也許以后可能不會再用到但回想自己學(xué)習(xí)的過程從對被他的神秘所吸引到后來的喜歡再到學(xué)習(xí)其間也讓自己體會到了一個完整的學(xué)習(xí)過程,也許這就是學(xué)習(xí)最終的結(jié)果得到的不一定是結(jié)果但方法肯定值得借鑒,回頭只能看到自己的影子,希望明天有明媚的陽光!

第二篇:matlab學(xué)習(xí)心得

學(xué)習(xí)MATLAB 感想 學(xué)習(xí)了 MATLAB 這門課程,我了解該軟件的基本功能,也知道 了該軟件在我們生活中的重要地位。隨著社會的不斷發(fā)展,科技 的不斷進(jìn)步,計算機(jī)的普及,它也被應(yīng)用在越來越多的方面。MATLAB 的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工 程中常用的形式十分相似,故用 MATLAB 來解算問題要比用 C,F(xiàn)ORTRAN 等語言完成相同的事情簡捷得多,MATLAB 的最突出的 特點就是簡潔。MATLAB相對于其他的一些編程軟件有許多的優(yōu)點:

一、語言簡潔緊湊,使用方便靈活,庫函數(shù)極其豐富。

二、運算符豐富。

三、MATLAB既具有結(jié)構(gòu)化的控制語句(如for循環(huán)、while循環(huán)),又有面向?qū)ο缶幊痰奶匦浴?/p>

四、語法限制不嚴(yán)格,程序設(shè)計自由度大。

五、程序的可移植性很好,基本上不做修改就可以在各種型號的計 算機(jī)和操作系統(tǒng)上運行。

六、MATLAB的圖形功能強(qiáng)大。用madlab創(chuàng)建矩陣時,方法有兩種:第一、可以直接依次輸入矩 陣各行各列的元素,但矩陣元素必須用[ ]括住,矩陣元素必須用逗號 或空格分隔,在[ ]內(nèi)矩陣的行與行之間必須用分號分隔。第二、用 MATLAB函數(shù)創(chuàng)建矩陣。MATLAB可以進(jìn)行矩陣的加減、乘除的元 素,求可逆矩陣、轉(zhuǎn)置矩陣,求矩陣的特征值,求線性方程組等等。MATLAB的功能是非常強(qiáng)大的,MATLAB不僅有強(qiáng)大的運算功 能,它還有強(qiáng)大的繪圖功能,我對它的了解也僅僅就是一點點,或許 說還沒有入門。比如說它含有豐富的內(nèi)建函數(shù),例如數(shù)學(xué)函數(shù)中的三 角函數(shù)、復(fù)函數(shù)、多項式函數(shù)、數(shù)據(jù)分析函數(shù)的求平均值、最大最小 值、排序等,以及邏輯/選擇函數(shù)如if-else等,還有用來模擬隨機(jī)發(fā) 生事件的隨機(jī)函數(shù)。這些我都不了解。雖學(xué)習(xí)MATLAB的時間雖然很短,但卻讓我了解到了它的強(qiáng)大和 它的功能。我想就算時間足夠,老師也不能把所有的都講解給我們,因為一個軟件的功能需要我們自己不斷的去摸索,老師也不可能知道 所有。老師只是個指路的明燈,最終的學(xué)習(xí)還是要靠自己。而且在摸 索過程中,我們能夠發(fā)現(xiàn)和體會學(xué)習(xí)的快樂!

第三篇:Matlab學(xué)習(xí)心得

? matlab博大精深,說到底我也只不過是個初學(xué)者,只是學(xué)的時間比新手長了一點,現(xiàn)在寫幾句給新手,希望能給你們有點幫助 1 學(xué)Matlab并不難,難的是學(xué)會怎么用。

2不要試圖掌握matlab的每一個功能,熟悉和你專業(yè)最相關(guān)的部分就可以了。不要問:明天要交作業(yè)了,哪位大俠幫忙寫個程序吧,或初學(xué)matlab,不懂呀,大哥大姐幫忙寫個程序之類的話

不要等到要用到才去學(xué),如果你有興趣,你有時間,你可以多學(xué)些東西,說不定什么時候就用了,機(jī)會只偏愛那些有準(zhǔn)備的頭腦,到時候就不會說什么,要做東西想讓人指點,基礎(chǔ)的東西來不及仔細(xì)看了,一寫程序嗎,低級錯誤滿天飛 不要說:不要讓我看matlab英文的幫助我看不懂--誰都是從不懂到懂的 不要擔(dān)心:我編程能力差,我一定用不好matlab。6 不要只問不學(xué) 7 學(xué)maltab要有耐心 看到某本書中或論壇的帖子中解決問題的方法要試著解決類似的問題,要舉一反三,要學(xué)會變通 有了問題先自己想,察看幫助,1個小時后沒有結(jié)果再問別人,不要一有問題就發(fā)問,然后什么都不管了,把希望寄托在別人身上 10 學(xué)會用搜索引擎,在網(wǎng)上可以找到很多資料,有的問題一搜索就能找到的,就不要來問別人了 11要多動腦,多動手寫程序、調(diào)試,看程序時候多想幾個為什么,理解別人程序中精華的東西,多自己調(diào)調(diào)程序,可以改改程序,把知識轉(zhuǎn)成自己的,弄懂一兩個經(jīng)典例子比粗粗的看一大書要好,值得一提是不是一下子就能看懂相對比較長,比較復(fù)雜的程序的,要做的是自己慢慢去分析,利用已經(jīng)有的資料和幫助,等慢慢搞懂它,要多看幾遍,相信多看一遍你就會有一些新的認(rèn)識,一直到你已經(jīng)掌握里例子的精華。多讀matlab高手寫的程序,帖子,找到一個高手,在幾個大的論壇可以搜索出一大堆的帖子,然后慢慢去看吧,從中可以學(xué)到很多東西,也許你會發(fā)現(xiàn)很多你都看不懂,這很正常,別人寫程序考慮的是能實現(xiàn)這樣的功能,運行效率等問題,而不是考慮是不是很容易能讓別人理解,你就看你現(xiàn)在能看懂,再看些通過你斷點調(diào)試,查help能看明白的,看不懂的就先放下,遇到好的和看不懂,你又很挺感興趣的話題,你先收藏起來,過段時間你再回頭看看,你會發(fā)現(xiàn),每看一遍,你就會多懂一些東西,當(dāng)你第三遍甚至第四遍看同一個程序的時候,也許你就會有豁然開朗的感覺。一個比較長的程序,首先不要怕長,把它分解成一句一句,一句一句看懂它。要明白一口吃不成胖子,好東西要慢慢體會,才能領(lǐng)會。電腦上復(fù)制粘貼很方便,對于別人解決的你專業(yè)上的問題,最好自己寫一遍,這樣印象深刻,對于不懂的函數(shù)用法的函數(shù),help中查查,能看懂多少算多少,對于程序斷點調(diào)試一遍,弄清楚每個語句的功能,14 盡量擺脫c編程的習(xí)慣,總愛用循環(huán),能不用的循環(huán)的盡量不用,掌握矢量化的精髓 善于總結(jié),學(xué)習(xí)過的知識,看過好的帖子可以收藏起來,過段時間再復(fù)習(xí)一下,一段時間的積累,你會發(fā)現(xiàn)你的水平在慢慢提高 16 多用help,see also lookfor get,set 等常用命令 要大膽的去試,試過才知道可不可以,如有人問可不可以把多個子程序放在一個m文件中,呵呵,試試不就知道了 多參與討論,不要只關(guān)心自己的問題,也經(jīng)常關(guān)注別人的帖子,從中也可以學(xué)到不少東西的 提醒一句,不要做只會下資料而不看的收藏家,這樣對你沒什么意義,書不在于多,真的看一兩本書也就夠了,以后要用的時候,再去查書,一味的東看看西看看,見了別人的資料,不關(guān)好不好,就留信箱的人,我感覺也不該這樣,有了那么多資料,就別想著還有沒有比這更好的了,開始學(xué)吧先寫這么多吧,希望對新手能有點用 感覺語言是相通的,不一定只針對matlab這門語言

如何寫程序,如果你還是初學(xué)者,那么盡量不要復(fù)制粘貼,那樣你是永遠(yuǎn)也無法學(xué)會寫程序的。另外也不要對著別人的程序,一個字一個字敲進(jìn)去,那樣的話你只能成為一名優(yōu)秀的打字員。一個比較好的方法是先讀懂他,理清他的思路,然后自己動手寫,寫不出來的時間再看看別人的程序,然后對照的看,你的和他的程序差異在哪里,寫的過程就是提高的過程。

程序運行有錯誤怎么辦,好多錯誤。首先,別害怕錯誤,這是每一個人都會碰到的問題,大牛,小蝦都一樣,你對你自己說 這不機(jī)會又來了,調(diào)程序的過程就是提高的過程。不要一遇到錯誤就來論壇發(fā)問了,如何調(diào),關(guān)鍵是看錯誤提示,看錯誤的類型及出現(xiàn)在哪條語句上。好好練自己的調(diào)試能力,這不僅可以幫你找到一些錯誤,有是碰到一些讀不懂的程序,借助斷點調(diào)試可以幫你讀懂程序

還不行怎么辦,用搜索引擎找答案(有時候把錯誤提示輸進(jìn)去就可以找到答案了)

還不行,這才發(fā)貼和別人交流。。

寫程序原則 盡量寫的簡單 通俗容易懂,讓那些不如你聰明的人都能看懂,命名的時候做到見名知意,寫的時間多加點注釋,不然,不要說別人讀不懂你的程序,等過幾天,你自己也讀不懂了,可以看看matlab里的函數(shù),注釋也寫的很詳細(xì),當(dāng)你覺得有些方法比較常用的時候,你可以封裝成函數(shù),加上一些說明,以后要用的時候,直接調(diào)用就可以了,注重代碼的重用性。

勿在浮砂筑高臺,基礎(chǔ)很重要,為什么學(xué)matlab,如果你只是把它當(dāng)成 c c++的附屬品,用這些語言的思維來寫一些奇怪的類matlab程序,我想你還是直接用c 或 c ++更合適,不要一開始就想著用matlab 做出什么東西,好好看一本matlab的基礎(chǔ)書,這些基礎(chǔ)對你以后的進(jìn)階會很有幫助。再說混合編程,什么都不懂就想著去混合編程是不實際的,maltab版本 vs 的版本不同,都會對混合編程影響的。所以結(jié)果是對著別人的例子來做也不一定會做出來,一是別人講的有些細(xì)節(jié)問題沒講清楚,二是版本問題。就算做出來,如果不明白為什么要這樣做,又有多大意義呢。然后自己做一個,又不會了。說這些的目的無非是希望想做混合編程的朋友多了解一些基礎(chǔ)的東西,否則在混合編程這一塊上會浪費很多時間,結(jié)果還是沒有解決問題。

7.0系列 深入淺出matalb混合編程這本書是值得一看的。多看幫助之類的話這里就不多說了。

Recent developments in linear quadtree-based geographic information systems

第四篇:matlab學(xué)習(xí)心得

編程心得

1.helpwin只是尋找函數(shù)類,一般不如用doc(相當(dāng)于幫助文檔中的搜索),但在用doc搜索不到幫助文件時可用helpwin,如找有關(guān)的幫助等;打開格式非標(biāo)準(zhǔn)的mat或xls等數(shù)據(jù)文件如dat文件或無后綴名的文件時,不要用打開方式打開,而應(yīng)先打開應(yīng)用程序如MATLAB或excel,然后在應(yīng)用程序中打開數(shù)據(jù)文件,這樣能得到正確的行數(shù)和列數(shù);lookfor可對M文件的第一行進(jìn)行關(guān)鍵字搜索,比help條件寬松;MATLAB大小寫有區(qū)分。用which搜索路徑;要打開matlab自帶的m文件直接用open即可,不需要找到路徑,會在當(dāng)前目錄和set path的路徑中搜索。矩陣的運算注意:標(biāo)量與矩陣進(jìn)行四則運算時該標(biāo)量與矩陣的每個元素進(jìn)行運算;兩矩陣相乘左矩陣列數(shù)須等于右矩陣行數(shù);矩陣除法有左除(反斜杠)和右除/(斜杠),AB=inv(A)*B,A/B=A*inv(B);方陣的乘方運算有四種:A^n,A^p,s^A,s.^A,其中A為方陣,n為整數(shù),p為非整數(shù),s為標(biāo)量;A’表示矩陣A的轉(zhuǎn)置,一般選中了Hermitian(共軛)復(fù)選框則元素帶共軛;funm(A,’fun’)表示矩陣的函數(shù)運算,要求A是方陣,fun為矩陣運算函數(shù)名;給矩陣賦值時維數(shù)必須匹配,用方括號,一個分號為一行。

3.?dāng)?shù)組的運算注意:數(shù)組乘法運算符為.*,表示兩數(shù)組中對應(yīng)元素相乘;數(shù)組的除法運算符為.和./,表示對應(yīng)元素相除;數(shù)組與數(shù)組運算時,參與運算的數(shù)組必須同維,結(jié)果為數(shù)組中每個元素進(jìn)行運算所得;直接用結(jié)構(gòu)名賦值即省略了(1);varargout返回輸出變量list即一系列變量名稱;feval(@fun,var1,?)用var1,?試算[evaluate]fun的值;讀二進(jìn)制文件常用fopen()和fread()組合,matlab讀fortran寫出的二進(jìn)制文件時往往要在fopen()中加'b';讀文本文件常用textread()和fopen();fscanf()組合,要注意格式,最好讀完后對照打開看看。

4.標(biāo)準(zhǔn)差std(x,flag,dim)默認(rèn)flag=0,dim=1計算公式為 的平方根,flag=1時分母為n;可通過h=figure(i),后用get(h)獲得圖形對象所有屬性的當(dāng)前值,其格式為:屬性名=屬性值;結(jié)構(gòu)數(shù)組可在域名后加(a,b)再加.變量名,調(diào)用時輸變量名可使用tab完成;利用struct函數(shù)一次輸入多個結(jié)構(gòu)元素時注意用單元數(shù)組,用{}而非[]。

5. 左除和右除的兩邊不一定是方陣,當(dāng)A為m*n矩陣,B為列向量時,AB表示A*X=B在最小平方意義上的解,需對A進(jìn)行QR分解,mn時解通過(A'*A)(A'*b)求得,而A/B =(B'A')';積分可以查一下積分命令quad 或者 trapz。6.注解塊操作符%{和%}必須單獨成行否則不起應(yīng)有作用;struct([])表示結(jié)構(gòu)數(shù)組,name1.name2表示name1為結(jié)構(gòu)數(shù)組;函數(shù)名切記不要與MATLAB內(nèi)置函數(shù)重名否則會出現(xiàn)錯誤因為系統(tǒng)先從當(dāng)前目錄尋找匹配的函數(shù);MATLAB可以把程序制作的動畫生成avi格式的視頻,須把avifile(),getframe(),addframe(),close()配合起來使用。7.啟動notebook后word文檔的菜單欄中沒有出現(xiàn)Notebook菜單項,可以依次單擊工具-》自定義-》命令-》宏,選擇保存于mbook.dot上的宏TemplateProject.mwNewNotebook..MAIN(把他拖到菜單欄然后單擊,沒必要)就會出現(xiàn)Notebook菜單項;計算區(qū)(Calc Zone)不要弄,evaluate M-book一般也不要用;單元轉(zhuǎn)換為文本可以常用。

8. 低級文件I/O函數(shù)很重要,因為它可讀寫二進(jìn)制文件,便于與FORTRAN結(jié)合;讀寫之前先用fopen(filename,mode),注意都要加單引號,返回值如ans=0表示操作成功,-1表示不成功;一定要注意r和w因為w會刪除原文件所有內(nèi)容;讀用fread(fid,count,precision,skip)其中precision如'uint8=>char'讀取文本文件,注意在fclose(fid)之前是連續(xù)讀的,不指定precision默認(rèn)按字節(jié)讀取可能會出現(xiàn)很多元素為0;fwrite(fid,A,precision,skip)用二進(jìn)制格式寫入文件,skip參數(shù)對于將數(shù)據(jù)插入到已知長度的記錄中非常有用;重設(shè)文件指針位置用fseek(fid,offset,origin)表示在fid指定的文件上按照origin給出的參照點,相對移動offset個字節(jié),注意如果指針不在開頭要重置到開頭origin應(yīng)選'cof'當(dāng)前位置而不選'bof'文件開始,重置完后可用ftell(fid)知道指針當(dāng)前位置相對于bof的字節(jié)數(shù),還可用ferror(fid)查詢錯誤信息;還可用frewind(fid)函數(shù)將文件位置指針返回到文件起始位置;從文本文件讀字符串行用fgets(fid,nchar)表示讀一行文本并帶有行結(jié)束符,每次讀nchar個字符直到遇上結(jié)束符。9.如果運行的M文件有錯誤,而且在命令窗口又要運行M文件中定義錯誤的內(nèi)置函數(shù)時可能會出現(xiàn)錯誤,這時應(yīng)改工作目錄;有些內(nèi)置函數(shù)可在命令窗口運行但在M文件中運行可能會出現(xiàn)錯誤,如sphere(n);腳本M文件與命令窗口公用變量工作區(qū),而函數(shù)M文件有單獨的變量工作區(qū),切實注意了;關(guān)系操作表達(dá)式返回的是邏輯型值即0和1。

10.?dāng)?shù)組維數(shù)擴(kuò)展時下標(biāo)不要用1,因這是默認(rèn)下標(biāo)用1后結(jié)果是重新賦值;不同數(shù)組類型轉(zhuǎn)換如cell2struct等之前一定要先看數(shù)組尺寸size(array);變量名切記不要用函數(shù)名,否則調(diào)用函數(shù)時會出錯還不知錯在哪,因MATLAB優(yōu)先使用變量名而非函數(shù)名,比如定義了變量max再調(diào)用max()函數(shù)時就會報錯Subscript indices must either be real positive integers or logicals;中括號加引號用于多個文件名可以,用于多個變量名不行;簡單統(tǒng)計量比如最大值,最小值,平均值加減后再統(tǒng)計和統(tǒng)計后再加減結(jié)果一樣;函數(shù)不管用或者出錯應(yīng)檢查是否不小心加了等號。

11.設(shè)置坐標(biāo)軸刻度和屬性時用set(gca,'xtick',數(shù)值數(shù)組);set(gca,'xticklabel',字符串?dāng)?shù)組);切記是label不要寫成lable;用box off可以去掉右邊和上邊的刻度和邊框;把右邊和上邊分別作為y和x軸可以加畫圖形,但最好不用plot而用line;有關(guān)坐標(biāo)軸設(shè)置的例子可見我的程序plotNino.m;要實現(xiàn)坐標(biāo)軸隔點標(biāo)注數(shù)值且所有點間隔線均保留需設(shè)置兩次坐標(biāo)軸,第一次顯示所有間隔線第二次用ax2=axes()后隔點標(biāo)注;放大工具只對ax2有效;標(biāo)注時字符矢量用{}且非數(shù)字字符必須加引號;注意annotation()中[x y w h]的x,y是對整個figure而言;標(biāo)記單個數(shù)據(jù)點用scatter()即可。

12.MatLab小波分析工具箱中一些學(xué)習(xí)心得:進(jìn)行多分辨率分析時,wavedec()得到的小波系數(shù)是由最后一層的低頻系數(shù)和各層的高頻系數(shù)首尾相連而成,不是相加;用wrcoef()可重構(gòu)各單支系數(shù)的對應(yīng)信號且saN+sdN+sdN-1+?+sd1近似等于原始信號s;用waverec()一次重構(gòu)的結(jié)果和單支重構(gòu)的和稍有差別但差別很小如e-15;用wavedec()時注意有些小波函數(shù)不能用如Morlet小波基等,具體可看wfilters();小波分解再重構(gòu)后與原始信號相差最小的小波函數(shù)為db1即Haar小波基;

13.只有函數(shù)式M文件才能定義函數(shù),腳本文件和函數(shù)不能寫入同一個m文件中,即腳本文件中不允許出現(xiàn)function()語句但可以調(diào)用同目錄下函數(shù)文件中的函數(shù);函數(shù)文件要想保留一些中間變量的值就要在函數(shù)外部調(diào)用因為函數(shù)調(diào)用結(jié)束時會銷毀臨時變量空間,需另寫腳本文件,要不然就將需要導(dǎo)出的變量作為返回的參數(shù)或者用global申明全局變量;要使函數(shù)文件中的函數(shù)易被其他腳本文件調(diào)用,文件名最好為第一函數(shù)名;一張圖中畫多張子圖時注意subplot(‘Position’,[ ])和axes(‘OuterPosition’,[ ])在[]中值一樣時子圖的位置大小不一樣,axes的[]所給區(qū)域按比例縮小包含坐標(biāo)軸標(biāo)題等故值易確定但調(diào)用時要加(..,’Parent’,*),此外subplot()可有系統(tǒng)給定區(qū)域;

MATLAB中內(nèi)置的函數(shù)

linspace(a,b,n)生成a~b之間線性分布的行向量,n默認(rèn)值為100。

logspace(a,b,n)生成10^a~10^b之間按對數(shù)等分的n個元素的行向量,n默認(rèn)50。zeros(m,n)生成m*n的全0矩陣;

ones(m,n)生成m*n的全1矩陣 rand(m,n)生成m*n均勻分布的單位間隔上隨機(jī)矩陣,取值范圍0.0~1.0 randn(m,n)生成m*n正態(tài)分布的隨機(jī)矩陣,取值范圍是整個實數(shù)區(qū)間

eye(m,n)生成m*n的單位矩陣; magic(n)生成n階魔方矩陣,n>=3 triu(X)生成X矩陣的上三角矩陣; tril(X)生成X矩陣的下三角矩陣

flipud(X)使矩陣沿水平軸上下翻轉(zhuǎn); fliplr(X)使矩陣沿垂直軸左右翻轉(zhuǎn);

Flipdim(X,dim)使矩陣沿特定軸翻轉(zhuǎn); rot90(X)使矩陣逆時針旋轉(zhuǎn)90度 cat(n,A1,A2,?,Am)n=1時子矩陣上下排列,n=2時子矩陣左右排列,n=3時子矩陣數(shù)m為第三維; repmat(A,行,列,頁,??)模塊矩陣A按后邊格式重復(fù)排列

ndims(P)返回數(shù)組P的維數(shù); size(P)返回向量其元素為數(shù)組各維的大??; length(P)返回數(shù)組P行數(shù)或列數(shù)的最大值

[L,U,P]=lu(X)矩陣X的三角分解,U為上三角,L為下三角,P為單位陣的行變換矩陣

[U,S,V]=svd(X)矩陣的奇異值分解,S為對角陣,U,V為酉矩陣,X=U*S*V’ [V,D]=eig(A,B,flag)由flag制定算法計算矩陣A和B的特征值D和特征向量V,flag的可能值為chol或qz;

[R,p]=chol(X)表示使用Cholesky分解算法,若X對稱正定則存在非奇異上三角陣R使R’*R=X,若X非正定則p為正整數(shù)R為有序上三角陣;[Q,R]=qr(A)

求正交矩陣Q和上三角陣R使A=QR;

T=schur(A,flag)返回正交矩陣U和schur矩陣T使A=U*T*U’;

rsf2csf(VR,DR)將實舒爾形式轉(zhuǎn)化成復(fù)舒爾形式; gsvd(A,B)廣義奇異值分解; qz(A,B)特征值問題的QZ分解; hess(A)海森伯格形式分解;

sparse(A)返回A的稀疏矩陣形式; full(S)將稀疏矩陣轉(zhuǎn)化為全元素矩陣; spy(S,’lineSpec’,markersize)用圖形顯示矩陣,點表示矩陣中非零元素位置。colmmd(S)返回稀疏矩陣列的最小度排序向量p,按p排列后的矩陣為S(:,p)。

setfield(ps,{i,j,k},域名,賦值)修改結(jié)構(gòu)數(shù)組ps中域的存儲內(nèi)容,返回維數(shù)為i*j*k。lower(string)把字符串中的大寫變?yōu)樾憽?/p>

strncmp(‘str1’,’str2’,n)比較兩字符串的前n個字符,str2可換為單元數(shù)組C,返回邏輯數(shù)組

lookfor name 尋找第一行注解H1中含有name的M文件。

findstr(str1,str2)先比較兩個字符串,然后在長的中找與短的匹配的子字符串,每找到一次返回匹配起始點的位置為數(shù)組元素。

fscanf(fid,format,size)從fid指定的文件讀size個數(shù)據(jù)并根據(jù)format指定的格式轉(zhuǎn)換,其中format如%c,%f,%d等,size為[m,n]時表示m*n矩陣按列存放,缺省讀全部數(shù)據(jù); fprintf(fid,format,A)按format指定格式轉(zhuǎn)換矩陣A中數(shù)據(jù)并將它們寫到fid指定文件,缺省fid時,數(shù)據(jù)輸出在屏幕上。

Repmat(A,m,n)A為子矩陣,復(fù)制m*n次; fix(A)返回數(shù)組中每個元素取整后的值; reshape(A,m,n)把數(shù)組A進(jìn)行重新排列,按列方式操作;

Prod(A)若A為向量則返回元素乘積,若A為矩陣則返回每列元素的乘積;

Permute(A,[a b c d])A為4維陣列,返回陣列的第1,2,3,4維為A的第a,b,c,d維 strcat(s1, s2, s3,...)把字符串或者單元數(shù)組s1,s2,s3進(jìn)行水平連接

w=conv(u,v)返回向量u和v的卷積,若m = length(u),n = length(v)則,j = max(1,k+1-n): min(k,m),k=1:m+n-1 [V,D] = eig(A)返回A的特征向量矩陣V和特征值矩陣D [S.field] = deal(X)域名為field的所有域元素賦值為X

[Y1, Y2, Y3,...] = deal(X{:})復(fù)制單元數(shù)組的內(nèi)容給變量Y1,Y2,Y3,? Num2cell(a,[i j])a為數(shù)值陣列,返回單元陣列每個單元為a保持第i,j維尺寸不變的數(shù)組

《MATLAB基礎(chǔ)與編程入門》

Page 2: MATLAB核心模塊有兩大分支分別以MATLAB為基礎(chǔ)和以simulink為基礎(chǔ)。MATLAB 2006b即MATLAB 7.3。MATLAB compiler能將M文件編譯生成為函數(shù)庫或可執(zhí)行文件,使其能與其他語言如C/C++混合應(yīng)用,MATLAB builder可將函數(shù)文件打包成com組件或.net組件、excel插件、java對象,將其應(yīng)用程序算法集成到開發(fā)工具或應(yīng)用軟件中。MATLAB的工具箱可提供函數(shù)給用戶直接使用,且其算法是開放和可擴(kuò)展的。MATLAB提供了與各種設(shè)備進(jìn)行數(shù)據(jù)I/O的交互工具和函數(shù)等。

Page 4: 工具箱包括:數(shù)學(xué)與數(shù)據(jù)分析,如spline 仿樣,mapping 繪圖、映射,genetic algorithm and direct research 遺傳算法和正變形研究等;數(shù)據(jù)采集與測量測試,如database 數(shù)據(jù)庫,excel link鏈接Excel等;信號處理與圖象處理,如system identification系統(tǒng)辨識,wavelet 小波分析,filter design 濾波設(shè)計等;控制系統(tǒng)設(shè)計與分析,如 fuzzy logic 模糊邏輯,robust control 強(qiáng)控制等;財經(jīng)與金融,如 financial time series 金融時間序列,GARCH 廣義條件異方差等;應(yīng)用程序集成與發(fā)布,如 MATLAB report generator 報告生成器,MATLAB web server 網(wǎng)絡(luò)服務(wù)器,MATLAB builder for.NET 編碼器等。Page 5: simulink是框圖設(shè)計環(huán)境,可對各種動態(tài)系統(tǒng)建模、分析和仿真,Stateflow可用來進(jìn)行邏輯驅(qū)動過程的仿真。Simulink 可將用C、C++和fortran語言編寫的算法集成到框圖中,其實時代碼生成工具可進(jìn)行代碼驗證。

Page 9: Real-Time Workship(RTW)可生成標(biāo)準(zhǔn)的C/C++代碼并具備生成其他語言代碼能力

《MATLAB編程基礎(chǔ)與典型應(yīng)用》

Page 8: MATLAB默認(rèn)每行命令產(chǎn)生的變量結(jié)果都顯示,加上英文狀態(tài)下;才不顯示??捎眠B續(xù)3個或以上的黑點?表示續(xù)行,但notebook中不能用。%表示其后一行的內(nèi)容為注釋。Page 10: 常用操作指令包括:clc, clear, clf, who, whos, delete , which , clear all, help , save , save , load , diary , type , what。Page 13: 歷史命令窗口點右鍵有很多實用功能。當(dāng)前目錄瀏覽器(CurrentDirectory)窗口可更改當(dāng)前目錄,打開M文件,導(dǎo)入MAT文件數(shù)據(jù)。工作空間瀏覽器窗口點右鍵可對變量進(jìn)行編輯、繪圖、保存,也可用save,load,whos,exist等命令管理變量。Page 17: 可用help命令在命令窗口顯示幫助內(nèi)容,也可用helpwin命令打開幫助瀏覽器窗口并顯示指定主題信息。還可用lookfor命令搜索包含字符的命令行,一旦發(fā)現(xiàn)就可用ctrl+C推出搜索過程。Demos目錄下的主題信息提供圖文并茂的演示。Page 19: 變量名第一個字符必須是英文字母且區(qū)分大小寫,不需要事先聲明。一些關(guān)鍵字不能作為變量名使用如if,while,return,for等。系統(tǒng)預(yù)定義的變量和常數(shù)有ans,pi,eps,inf,nan,i,j,nargin,realmin,realmax,nargout,可被臨時覆蓋。Page 26: 提取矩陣元素時,序號按列排列。Page 37: 矩陣的乘方運算有四種。

Page 43: MATLAB中的關(guān)系運算符有<,<=,>,>=,==,~=;邏輯運算符有&,|,~,xor,&&(先決與),||(先決或),先決表示左邊的運算符合要求就不需執(zhí)行右邊運算。Page 54: 稀疏矩陣大部分元素為0,故只需儲存非零元素的下標(biāo)和元素值。Page 72: 數(shù)值數(shù)組和字符串?dāng)?shù)組中存儲單元的數(shù)據(jù)類型相同,使用()操作;單元數(shù)組中每個單元存放的數(shù)據(jù)可能都不一樣,使用{}操作,獲取單元數(shù)組內(nèi)容時圓括號只顯示單元,花括號才顯示內(nèi)容。

Page 77: 結(jié)構(gòu)數(shù)組組織數(shù)據(jù)的能力比單元數(shù)組要強(qiáng)些,可通過struct(域名1,賦值,域名2,賦值??)函數(shù)創(chuàng)建;獲取結(jié)構(gòu)數(shù)組域中的具體內(nèi)容使用符號.,也可用專用函數(shù)getfield()獲??;修改結(jié)構(gòu)數(shù)組中域存儲內(nèi)容的函數(shù)是setfield()。

Page 81: 多項式以行向量的形式存放且以降冪形式出現(xiàn),若缺少某冪次項則該項系數(shù)為0 Page 134: 句柄是圖形對象的標(biāo)志代碼,標(biāo)識代碼含有圖形對象的各種必要的屬性信息;圖形對象的所有屬性都是由屬性名和屬性值組成,對圖形對象屬性操作可實現(xiàn)不同表現(xiàn)效果,可通過句柄控制;用get(get(gca,'children'))命令可看到軸的子代的各種屬性值;可對圖形對象設(shè)置缺省對象屬性來實現(xiàn)繼承操作,還可用set(h,’.’,’.’)設(shè)置各種屬性。《精通MATLAB7編程與數(shù)據(jù)庫應(yīng)用》

Page 5: 為調(diào)試程序而進(jìn)入debug方式時,提示符變?yōu)镵>>;運算符兩邊的空格隨意添加后無區(qū)別;在命令歷史中查找,可將光標(biāo)定位于某行后敲要查找的語句的首字母;可將用得多的幾條語句選中后在右鍵菜單選”create shortcut”創(chuàng)立快捷鍵;命令窗口輸入pathtool或選File->Set path可設(shè)置搜索路徑。Page 19: 函數(shù)的輸入?yún)?shù)用圓括號括起來用逗號分隔,輸出參數(shù)在等式左邊用方括號;語句的續(xù)行可在結(jié)尾用省略號(?);一行中可寫多個語句,語句用逗號或分號隔開,若想寫完多行命令再運行可按shift + enter組合鍵;還可使用“Tab完成”,在命令和editor窗口寫入文件名、變量、結(jié)構(gòu)和函數(shù)名時只寫入前面的幾個字符后按Tab鍵。Page 24: 變量名是否正確可用isvarname查看0表有誤;變量類型包括三種,常用的是局部變量,全局變量要用global聲明且每個使用函數(shù)都要聲明,永久變量(一直在內(nèi)存中)要用persistent聲明。

Page 171: 程序開發(fā)的建議:

1. 化復(fù)雜為簡單:將每個任務(wù)做成一個獨立的函數(shù),函數(shù)盡量短;用數(shù)學(xué)語言寫出步驟和流程,再轉(zhuǎn)換成程序語言;選擇正確的數(shù)據(jù)結(jié)構(gòu)(如哪種數(shù)組)。

2. 遵循的原則:使用描述性的變量名和函數(shù)名,盡量不用縮寫;函數(shù)前面寫幫助的注解,說明函數(shù)功能;一行不要超出80列以便打??;函數(shù)只被另一個函數(shù)調(diào)用,把被調(diào)函數(shù)作為子函數(shù)與主函數(shù)放在同一個M文件上。

3. 函數(shù)命名的唯一性:用which –all 函數(shù)名 檢驗。

4. 分步寫程序,分步調(diào)試:對較大程序,一次寫成一部分,然后測試;能正常工作且輸出結(jié)果合理,再寫下一部分;修改也一樣,每次調(diào)試一部分。

5. 程序最后測試:用debugger,可記錄下被執(zhí)行的每一行代碼;用不同的輸入組合測試,讓每一行至少執(zhí)行一次。Page 173: 在命令窗口的命令提示符下輸入M文件名可運行該M文件;MATLAB與其它語言的區(qū)別之一是過程控制語句可能用到數(shù)組或矩陣;對if條件判斷,若邏輯表達(dá)式非標(biāo)量,那么它的所有元素值都非0,if條件才能滿足,也可以是空數(shù)組,表示條件為假。Page 175: 分支語句switch后的表達(dá)式可以是函數(shù)或數(shù)值或字符串;循環(huán)有兩種:次數(shù)確定的和依條件結(jié)束的;for循環(huán)中可用數(shù)組控制循環(huán)次數(shù),MATLAB把列數(shù)作為循環(huán)次數(shù);for語句可寫在一行,分隔符用逗號;continue回到循環(huán)頭,break退出循環(huán),嵌套循環(huán)中都作用最內(nèi)層循環(huán);錯誤控制語句try?catch?end執(zhí)行時,try?catch范圍內(nèi)出現(xiàn)錯誤可轉(zhuǎn)到代碼段catch?end做出響應(yīng),若此段還有錯誤則結(jié)束程序執(zhí)行;return語句可強(qiáng)制結(jié)束當(dāng)前運行的程序。Page 179: 腳本(scripts)與函數(shù)的區(qū)別:腳本簡單執(zhí)行一系列語句和需多次運行的文件,不能接受輸入?yún)?shù)也不返回輸出結(jié)果,變量保存在基本工作區(qū);函數(shù)有定義語句function,有輸入輸出,變量有單獨工作區(qū);輸出用[],輸入用()。

Page 181: 默認(rèn)下M文件名與第一個函數(shù)名相同,若不同需用文件名引用函數(shù);用exist函數(shù)識別是否為M文件函數(shù),非0則是;用which函數(shù)找到M文件函數(shù)的源碼;

《MATLAB程序設(shè)計與應(yīng)用》

Page 242: 在M-book 中,在word與MATLAB之間進(jìn)行傳遞的內(nèi)容稱為單元(Cell),輸入輸出是指對MATLAB而言;m-book最重要的操作就是輸入單元的定義與執(zhí)行,其方法是:先在文檔中輸入命令后選中命令行,再按組合鍵Alt + D(=Define Input Cell),則命令行變成綠色的輸入單元,然后按組合鍵Ctrl + Enter(=Evaluate Cell),執(zhí)行后產(chǎn)生藍(lán)色的輸出單元;也可選中命令行后直接按組合鍵Ctrl + Enter輸入并執(zhí)行;注意:命令和標(biāo)點須在英文狀態(tài)下輸入,MATLAB的續(xù)行符不能用于m-book,它會自動換行無需加回車符,修改后執(zhí)行新結(jié)果會覆蓋掉老結(jié)果。

Page 247: 可用evaluate loop實現(xiàn)單元的循環(huán)執(zhí)行,用purge output cells刪去選中的輸出單元,用undefine cells把單元轉(zhuǎn)換為文本;輸出格式控制包括輸出數(shù)據(jù)控制和圖形控制,可通過notebook->notebook options->embed figures in m-book是否選中控制輸出圖形是否鑲嵌在m-book文檔中;若輸出圖形背景色不是白色可在MATLAB命令窗口運行whitebg('white')再重新運行輸入單元;可通過“樣式和格式”修改Output等的樣式。Page 251: Simulink主要對動態(tài)系統(tǒng)進(jìn)行建模、仿真和分析,提供圖形用戶界面GUI,用戶可用鼠標(biāo)從模塊庫中調(diào)用標(biāo)準(zhǔn)模塊并適當(dāng)連接以建模同時用參數(shù)對話框設(shè)置參數(shù),建模后選擇仿真參數(shù)和數(shù)值算法便可啟動仿真程序?qū)ο到y(tǒng)仿真;simulink仿真模型表現(xiàn)為方框圖,其擴(kuò)展名為.mdl,數(shù)學(xué)上體現(xiàn)了一組微分方程或差分方程,通常包含3類模塊:信源(source)、系統(tǒng)(system)、信宿(sink儀器);可用format菜單調(diào)整模塊方向,改變模塊前景色、背景填充色或者模型背景色,產(chǎn)生陰影效果等,處理模塊名,給連線加標(biāo)志;模型連接須從一個模塊的輸出端連到另一個模塊的輸入端,默認(rèn)是折線要用斜線需選中連線再按住shift鍵拖動;連線分支操作是鼠標(biāo)移到分支點位置先按下ctrl鍵再拖動到目標(biāo)模塊的輸入端;選定模塊后再用模型編輯窗口edit菜單可設(shè)置模塊參數(shù),模塊屬性等。

Page 265: 系統(tǒng)仿真過程中,事先須對仿真算法、輸出模式等仿真參數(shù)進(jìn)行設(shè)置,方法是:從模型編輯窗口simulation菜單中選擇configuration parameters命令打開仿真參數(shù)對話框設(shè)置仿真參數(shù);設(shè)置仿真參數(shù)完后,從simulation菜單中選擇start項便可啟動當(dāng)前模型的仿真,此時stop命令變成可選以供中途停止;為觀察仿真結(jié)果變化軌跡可以:把輸出結(jié)果送給scope模塊或者XY graph模塊,把仿真結(jié)果送到輸出端口并作為返回變量后用MATLAB命令繪制該變量變化曲線,把輸出結(jié)果送到to workspace模塊從而直接存入工作空間后用繪圖命令繪制出變量變化曲線;系統(tǒng)仿真步驟如下:建立系統(tǒng)仿真模型包括添加模塊、設(shè)置模塊參數(shù)以及進(jìn)行模塊連接等操作,設(shè)置仿真參數(shù),啟動仿真并分析仿真結(jié)果。

Page 134: 要在MATLAB中使用其他軟件的圖象需用[x,c]=imread(filename,fmt)讀取該圖象,其圖像通常由數(shù)據(jù)矩陣x和色彩矩陣c組成,真彩色圖像的數(shù)據(jù)矩陣為三維,三個面上數(shù)據(jù)分別是RGB三種顏色的強(qiáng)度值,每個元素對應(yīng)圖像中一個像素點;可用colormap(c)函數(shù)設(shè)置色圖;影片動畫制作有三個函數(shù):moviein(n)建立一個足夠大的n列矩陣,a(:,n)=getframe將n幅畫面信息保存矩陣a中,movie(a,m)播放由矩陣a定義的畫面m次;實時動畫制作是先畫出初始圖形,再計算活動對象新位置并顯示新對象擦除舊對象,可通過EraseMode屬性實現(xiàn)一般選Xor,只繪制與屏幕顏色不一致的原對象點;可通過改變數(shù)據(jù)屬性來重新繪圖,沒改變一次就應(yīng)用drawnow命令刷新屏幕一次。

Page 311: mat文件是MATLAB數(shù)據(jù)存儲的默認(rèn)文件格式,以雙精度二進(jìn)制格式保存數(shù)據(jù),它由128字節(jié)的文件頭和其后的數(shù)據(jù)單元組成;MATLAB提供了一個子程序庫使用戶可以在C/C++,FORTRAN中直接調(diào)用這些子程序來創(chuàng)建和讀取mat文件;操作mat文件的API函數(shù)封裝于兩個標(biāo)準(zhǔn)庫文件:libmat.lib和libmx.lib,存放在binwin32相應(yīng)子文件夾中,在externinclude中有與前面兩個庫文件對應(yīng)的.def文件:libmat.def,libmx.def,其導(dǎo)出函數(shù)原型位于同目錄下的mat.h,matrix.h中,前者包含mat文件的創(chuàng)建讀寫等函數(shù)的定義,后者包含MATLAB中基本數(shù)據(jù)類型和矩陣的定義;在FORTRAN語言中mat文件操作函數(shù)有:matOpen(filename,mode), matClose(mfp), matDeleteVariable(mfp,name), matGetDir(mfp,name), matPutVariable(mfp,name,pm), matGutVariable(mfp,name,pm), matPutVariableAsGlobal(mfp,name,pm),其中mfp為指向mat文件的指針,name是讀寫mat文件的矩陣名稱,num為矩陣數(shù)目,pm是mxArray結(jié)構(gòu)體指針,mode為打開文件方式。Page 315: MATLAB編譯器(MCC)可將m語言編寫的函數(shù)文件(腳本文件不行)轉(zhuǎn)換成C/C++源代碼,經(jīng)編譯鏈接后可生成函數(shù)庫、可執(zhí)行程序、COM組件等,從而提高程序執(zhí)行效率豐富程序開發(fā)手段并隱藏算法源代碼;使用MCC需安裝MATLAB和一種C/C++編譯器,如VC++6.0,要生成獨立應(yīng)用程序需安裝相應(yīng)數(shù)學(xué)庫和圖形庫;編譯器配置即執(zhí)行命令:mbuild –setup 后按提示選取一種編譯器(通常安裝VC++6.0后選擇它)生成批處理文件并注冊相關(guān)dll文件,mbuild通過調(diào)用外部的C/C++編譯器把M文件翻譯成C/C++源代碼然后與MATLAB的C/C++數(shù)學(xué)庫、圖形庫鏈接得到獨立可執(zhí)行程序;執(zhí)行命令為:mcc –m –I /files_source(源文件路徑)–d /files_target(目標(biāo)文件路徑)*.m ;離開MATLAB執(zhí)行exe文件時要把生成的所有文件包括相應(yīng)庫文件全部帶上。

Page 319: MATLAB提供了客戶/服務(wù)器(Client/Server,C/S)功能,利用動態(tài)數(shù)據(jù)交換(DynamicDataExchange,DDE)功能和ActiveX自動化服務(wù)功能,可以實現(xiàn)在其他程序中對MATLAB程序及函數(shù)的調(diào)用,且通過mxArray與工作空間交換數(shù)據(jù),從而增強(qiáng)其他語言的數(shù)值計算能力和數(shù)據(jù)可視化能力;MATLAB引擎是一組函數(shù)庫,他提供了一種在用戶程序進(jìn)程中與MATLAB進(jìn)程通信的方法,在WINDOWS下使用ActiveX技術(shù)實現(xiàn),使用組件對象模型(ComponentObjectModel,COM)接口;C語言MATLAB計算引擎包括引擎函數(shù)和mx-函數(shù)兩類,常用引擎函數(shù)有engOpen, engClose, engGetVariable, engPutVariable, engEvalString等,mx-函數(shù)的具體用法參見幫助文件中section為External Interfaces Reference部分;引擎編程首先要將mxArray轉(zhuǎn)換成MATLAB中可操作的形式,將源程序編寫存盤后再用mex命令對源程序文件進(jìn)行編譯,注意源文件中不能有中文(即使是注釋);mex用來編譯簡單文件合適,但工程復(fù)雜時需在VC++6.0的集成環(huán)境中編譯鏈接。

Page 324: 常用FORTRAN引擎函數(shù)有engOpen(startcmd), engClose(ep), engGetVariable(ep,name), engPutVariable(ep,name,pm), engEvalString(ep,command)等,其中startcmd 為引擎參數(shù)(字符型),ep為引擎指針(整型),name為矩陣名,pm為mxArray矩陣指針,command為MATLAB命令;在MATLAB命令窗口使用的編譯命令是optsfile=[matlabroot 'binwin32mexoptsdf60engmatopts.bat'];mex('-f',optsfile,'*.f90');但有時候沒有df60engmatopts.bat文件,這時候需在VisualFortran的集成環(huán)境中編譯鏈接;可先用VF打開該f90文件然后選Tools->Options->Directories,在Include files中添加matlabrootexterninclude,在Library files中添加externlibwin32microsoft,然后選Project->Settings->Link,在Object modules中添加libmx.lib libmat.lib libeng.lib,再用默認(rèn)的編譯鏈接可生成可執(zhí)行文件*.exe。

Page 325: MEX(MATLAB executable)動態(tài)鏈接函數(shù)接口使MATLAB可直接調(diào)用C,FORTRAN語言編寫的算法程序,應(yīng)用如下:對已有的C,FORTRAN子程序通過添加入口程序mexFunction可由MATLAB調(diào)用而不必重編M文件,可把要求大量循環(huán)迭代的部分用C語言編寫為MEX文件提高計算速度,直接控制硬件如數(shù)據(jù)采集卡等;MEX文件優(yōu)于M文件執(zhí)行,用C語言編寫MEX文件的特點是編程靈活指針功能強(qiáng),但應(yīng)注意C和MATLAB中數(shù)據(jù)存儲方式的差別,其源程序包括兩部分:入口子程序(作用是建立通信聯(lián)系),計算子程序(可是普通的C程序),注意都要包括頭文件mex.h;可在命令窗口輸入mex filename.c編譯MEX程序,但在VC環(huán)境下更好,項目類型為Win32 Dynamic-link library,(設(shè)置環(huán)境和參數(shù)都較麻煩)編譯鏈接無誤后產(chǎn)生*.dll,運行時會自動打開新的MATLAB應(yīng)用程序。

Page 330: FORTRAN語言數(shù)值計算功能強(qiáng)但指針功能弱,其MEX文件同樣由入口子程序和計算子程序組成,它只支持雙精度類型和字符串類型的數(shù)據(jù);mexFunction()中參數(shù)的意義和C語言一樣,入口子程序也和C語言大體相同,編譯時先輸入命令mex –setup選擇DigitalVisualFortran6.0作為默認(rèn)編譯器,有些MATLAB軟件里沒有(如我的只能用VC++);集成環(huán)境中編譯步驟如下:新建一個項目類型為FortranDynamicLinkLibrary,選Project->Add to project->new->Text file創(chuàng)建與項目同名的定義文件(*.def),選Tools->options->directories-> include files添加externinclude,library files添加libwin32digitaldf60,選project->settings-> output file name輸入*.dll,Object modeles增加libmx.lib,libmex.lib,將文件加入到項目中再進(jìn)行編譯鏈接,可生成*.dll;將MATLAB數(shù)據(jù)接口和其他開發(fā)環(huán)境結(jié)合可充分發(fā)揮數(shù)值計算長處避開執(zhí)行效率低的不足,MATLAB還提供了與excel中數(shù)據(jù)交互的工具箱、VB算法庫及MATLABwebServer可通過HTTP協(xié)議在安裝了web服務(wù)器主機(jī)上提供MATLAB計算遠(yuǎn)程服務(wù),硬件操作方面MATLAB提供了串行通信對象操縱串行口并可通過mex程序調(diào)用設(shè)備驅(qū)動程序。《MATLAB7.x程序設(shè)計語言》

Page 266: 建立多維數(shù)組有四種方法:利用下標(biāo)建立,如2×2的矩陣也可看作是2×2×1的數(shù)組可擴(kuò)展維數(shù),標(biāo)量輸入表示擴(kuò)展維元素均相同;利用特殊數(shù)組函數(shù)(如rand, randn, ones等)可直接產(chǎn)生多維數(shù)組,也可用repmat(A,m,n)直接產(chǎn)生;利用cat(n,A,B)連接A,B矩陣,n為指定維數(shù),連接時是最后一維變化;編寫M文件將記錄組合成多維數(shù)組;ndims獲得維數(shù),size得到各維尺寸,whos得到數(shù)組存儲格式。

Page 269: 多維陣列(即數(shù)組)的下標(biāo)訪問即采用各維的下標(biāo)訪問其元素,可用向量來表示多個元素,: 表示其他維固定該維變化的所有元素還可用a:b取出部分元素;陣列重新排列可用reshape函數(shù)按列重排,用squeeze函數(shù)刪除單點維(尺寸size為1的維);序列變換可用permute函數(shù)改變指定維次序。

Page 272: 面向向量的函數(shù)(如sum,mean,prod等)通常在第一個非單點維上操作且允許指定的維,也有例外如cross函數(shù);元素對元素的操作函數(shù)(如三角、指數(shù)函數(shù)等)對每個元素進(jìn)行同樣操作,算術(shù)、邏輯、關(guān)系操作符也按元素對元素方式處理,有一個為標(biāo)量則對陣列所有元素與該標(biāo)量進(jìn)行同樣操作;面向矩陣的函數(shù)(如線性代數(shù)函數(shù))不能用于多維陣列,需從中取出維數(shù)為2的一部分進(jìn)行操作;RGB(m,n,3)的三色原理Color=0.3*RGB(:,:,1)+0.59*RGB(:,:,2)+0.11*RGB(:,:,3)。Page 273: 結(jié)構(gòu)陣列由多個域構(gòu)成,不同域可存放不同類型的數(shù)據(jù),可用結(jié)構(gòu)名(下標(biāo)).域名對結(jié)構(gòu)陣列賦值;用結(jié)構(gòu)名顯示結(jié)構(gòu)信息,只有一個結(jié)構(gòu)元素顯示各元素值,可用rmfield函數(shù)刪除錯誤域名;用struct函數(shù)可產(chǎn)生一個結(jié)構(gòu)元素的結(jié)構(gòu)數(shù)組,再利用單元數(shù)組{}可輸入多個結(jié)構(gòu)元素;訪問結(jié)構(gòu)數(shù)組中的元素可用下標(biāo),利用getfield(結(jié)構(gòu)名,{下標(biāo)},’域名’,{a:b,c:d})可得到域的部分值(域元素),利用setfield函數(shù)可改變結(jié)構(gòu)的域值。Page 277: MATLAB函數(shù)和操作符可用于結(jié)構(gòu)數(shù)組中的域和域元素,可用循環(huán)來完成指定功能,還可對同名域的數(shù)據(jù)用函數(shù)直接處理;結(jié)構(gòu)陣列的數(shù)據(jù)組織方式有平面組織和元素對元素組織等,如對三個獨立存儲矩陣,平面組織方式下每個域是一個平面的數(shù)據(jù)(矩陣),這樣容易提取平面數(shù)據(jù)并擴(kuò)展平面?zhèn)€數(shù),訪問子集時稍麻煩,元素對元素組織結(jié)構(gòu)的建立需用循環(huán),訪問子集較容易但訪問平面還要用循環(huán);結(jié)構(gòu)陣列的域值可以是另一個已定義過的結(jié)構(gòu),即結(jié)構(gòu)嵌套,如用struct建立一個結(jié)構(gòu)元素再用賦值語句*.原域名.域名擴(kuò)展。

Page 282: 單元陣列中每個單元可以是標(biāo)量、向量、矩陣、字符陣列、結(jié)構(gòu)陣列、多維陣列等,在建立單元陣列之前應(yīng)確保不存在同名數(shù)值陣列否則會導(dǎo)致錯誤;對單元陣列賦值時應(yīng)使用花括號,放左邊較方便,可用cell(m,n,?)預(yù)分配空單元陣列;顯示單元數(shù)組可直接輸入數(shù)組名顯示單元信息,也可采用celldisp函數(shù)顯示詳細(xì)信息和cellplot函數(shù)顯示存儲結(jié)構(gòu)圖形;使用單元陣列數(shù)據(jù)也用下標(biāo)訪問但注意括號,訪問一個單元用花括號,訪問單元中的元素和部分單元用圓括號;刪除元素也用賦空值,如A(:,2)=[]后A可能成了一維單元陣列。

Page 285: 花括號內(nèi)采用冒號操作符相當(dāng)于指示多個獨立的單元內(nèi)容如A{m:n},形如[a{1};a{2}]可構(gòu)造數(shù)值陣列;可用單元數(shù)組代替函數(shù)輸入、輸出、顯示操作等的變量列表,如[a{1:2}]=eig(B)此時a{1}為特征向量(模態(tài))矩陣a{2}為特征值(規(guī)范)矩陣;利用下標(biāo)可將函數(shù)和操作符應(yīng)用于單元陣列,用循環(huán)可對所有單元進(jìn)行處理;單元陣列比結(jié)構(gòu)陣列更具包容性,它可在一條賦值語句中訪問多個數(shù)據(jù)域,如使用[a,b]=c{1:2}相當(dāng)于a=s.f1;b=s.f2其中c為單元陣列,s為等價結(jié)構(gòu)陣列;利用花括號、cell函數(shù)及賦值語句可建立嵌套的單元陣列,不用cell函數(shù)預(yù)分配完全可以但賦值系統(tǒng)會花更多時間;單元陣列與數(shù)值陣列之間的轉(zhuǎn)換應(yīng)采用循環(huán)程序,num2cell可實現(xiàn)數(shù)值到單元。

Page 290: 多維單元數(shù)組可利用cat函數(shù)連接產(chǎn)生,如A,B為2×2的單元數(shù)組則可用cat(3,A,B)生成2×2×2的多維單元數(shù)組;多維結(jié)構(gòu)數(shù)組可利用直接賦值或cat函數(shù)產(chǎn)生,定義后可用結(jié)構(gòu)的域名來訪問還可對其數(shù)據(jù)應(yīng)用函數(shù)和操作符;利用單元數(shù)組還可將具有不同域結(jié)構(gòu)的結(jié)構(gòu)數(shù)組存儲在一起,每個單元為一個結(jié)構(gòu)數(shù)組;多維數(shù)值陣列適用于規(guī)則數(shù)據(jù),結(jié)構(gòu)陣列適用于不一致的數(shù)據(jù),單元陣列可用于任意數(shù)據(jù)混合;一般結(jié)構(gòu)名首字母大寫,單元數(shù)組名大寫,其余名稱小寫,較復(fù)雜的數(shù)據(jù)庫用單元中有結(jié)構(gòu),結(jié)構(gòu)中有數(shù)值和字符的形式。

Page 314: MATLAB中字符以其ASCII碼表示,每個字符都采用16位的ASCII碼存儲,字符串即一維字符數(shù)組;double函數(shù)可把字符串中每個字符轉(zhuǎn)變成ASCII碼,char函數(shù)可把ASCII碼數(shù)組轉(zhuǎn)變成對應(yīng)字符串;建立二維字符數(shù)組時應(yīng)注意確保每行上的字符數(shù)相等,方法是先disp每行字符串的長度length()后用blanks函數(shù)在較短的字符串末尾補上空格;從字符數(shù)組中提取字符串時,可用deblank函數(shù)刪除末尾多余的空格;利用cellstr函數(shù)可將字符數(shù)組變換成字符串單元數(shù)組,每個單元均為字符串且已刪除末尾空格,利用char函數(shù)可進(jìn)行其逆操作,且可自動在每行末尾加上適當(dāng)空格。

Page 317: 比較兩字符串是否完全相同用strcmp函數(shù),strcmpi函數(shù)比較時忽略大小寫,strncmp函數(shù)比較兩字符串前n個字符是否相同,相同時,返回邏輯真,值為1不同為0;可用MATLAB關(guān)系操作符逐字比較兩個字符串是否相同或大小關(guān)系,采用的是ASCII碼,表達(dá)式為真值為1;可用isletter函數(shù)逐字比較字符串是否全由字母構(gòu)成,是則為1,isspace函數(shù)逐字比較字符串是否有空格,還可用或操作符檢測字符串是否全由字母和空格構(gòu)成。Page 319: 利用findstr和strrep函數(shù)可實現(xiàn)字符串中部分字符的搜索與替代;用strtok函數(shù)可找出第一個分隔符之前的字符串,若有n個單詞可用循環(huán)和array=strvcat(string,n)從英文句子中提取單詞;MATLAB提供了一組函數(shù)如int2str,num2str,bin2dec,hex2dec,base2dec等在各種數(shù)制和字符串之間進(jìn)行變換;只有用num2str函數(shù)才可將含小數(shù)的數(shù)值變換成字符串如在圖形標(biāo)記中使用數(shù)值,用mat2str函數(shù)可將矩陣變換成字符串形式。

第五篇:MATLAB學(xué)習(xí)心得

MATLAB學(xué)習(xí)心得

MATLAB命令

要查詢某一命令是在搜尋路徑的何處,可用which命令: >>which fact E:studycodematlabfact.m

what 列出當(dāng)前目錄下的.m文件和.mat who:顯示當(dāng)前所有變量的簡單列表 whos:顯示當(dāng)前所有變量的詳細(xì)信息

disp打印;clc清屏;clf清圖;

close all 關(guān)閉所有圖形; clear 清除所有變量

esc 清除一行ctrl+c中斷程序運行

tic 開始計時;shift+enter換行;toc停止計時 % 行注釋; %{……%} 塊注釋

%% + 空格 + 模塊名添加程序塊使得模塊化 三個小黑點連續(xù)換行;或者shift+enter語句換行 cd 路徑改變當(dāng)前目錄

elseif沒有空格 switch

case(不需要用break跳出)...otherwise end

funtool函數(shù)計算器

eval('MATLAB表達(dá)式')執(zhí)行一個MATLAB表達(dá)式 example: >>for i=1:3 >>eval(['book',num2str(i),'=',num2str(2*i-1)]);>>end book1 = 1 book2 = 3 book3 = 5

MATLAB求方差

var(x)= var(x,0)除以n-1 var(x,1)除以n

MATLAB繪圖

matlab語法與繪圖文件夾,詳細(xì)介紹了MATLAB基本運算、MATLAB基本平面繪圖、MATLAB基本立體繪圖

x=linspace(-2, 2, 25);% 在x軸上取25點 y=linspace(-2, 2, 25);% 在y軸上取25點

[xx,yy]=meshgrid(x, y);% xx和yy都是25x25的矩陣

zz=xx.*exp(-xx.^2-yy.^2);% 計算函數(shù)值,zz也是25x25的矩陣 mesh(xx, yy, zz);surf(xx, yy, zz);

% 畫出立體網(wǎng)狀圖 % 畫出立體曲面圖 figure(n):打開編號為n的圖形窗口

subplot(m,n,p):分割圖形顯示窗口為m*n塊,p為子塊編號 axis([xminxmaxyminymax]):給出區(qū)域

text(x,y,'字符串')在坐標(biāo)(x,y)處顯示字符串 gtext('字符串')通過鼠標(biāo)選擇說明文字的位置 title('圖標(biāo)標(biāo)題')xlabel('x坐標(biāo)軸名稱')ylabel('y坐標(biāo)軸名稱')legend('','',''...)圖例名 grid on/off hold on/off 矩陣運算

For vectors, ALL(V)returns logical 1(TRUE)if none of the elements of the vector are zero.所有的數(shù)都非零返回1 ANY True if any element of a vector is a nonzero number or islogical 1(TRUE).ANY ignores entries that are NaN(Not a Number).sum(A):按列求和

repmat(A,m,n):將矩陣復(fù)制m*n份

矩陣變換 rot90逆時針旋轉(zhuǎn)90度flipud上下翻轉(zhuǎn)fllplr左右翻轉(zhuǎn)

單元數(shù)組可以存放不同的數(shù)據(jù)類型

>>A{1,1}=magic(3);A{1,2}='djk';A{2,1}=sym('sin(x)+cos(x)');A = [3x3 double] 'djk' [1x1 sym ] [] cellplot(A):圖形化顯示單元數(shù)組的結(jié)構(gòu)

行簡化階梯型矩陣 rref(A)求矩陣的秩 rank(A)det(A)求行列式 [V D] = eig(A):

D對角線上的元素為A的特征值,V為相對應(yīng)的特征向量構(gòu)成的矩陣 當(dāng)V滿秩時,A可對角化,inv(V)*A*V = D 擬合和插值

cftoolSurface Fitting Tool.polytool(x,y,2)多項式擬合 rstool(x,y,'model',alpha)

最小二乘法線性擬合 function zxecf(x,y)clear z = polyfit(x,y,1);

f = poly2sym(z);poly2str(z,'x');plot(x,y,'r*');hold on ezplot(f,[xminxmax]);

// ezplot畫符號函數(shù)

擬合工具箱 %{ yy = polyval(z,x);plot(x,y,'r*',x,yy);%}

函數(shù)的3種使用方法

利用function直接定義函數(shù),要求文件名和函數(shù)名一致,函數(shù)文件名不能由數(shù)字組成 函數(shù)句柄實現(xiàn)對函數(shù)的間接調(diào)用 fhandle = @M文件名

匿名函數(shù):fhandle = @(arglist)expr由輸入?yún)?shù)列表arglist和表達(dá)式expr確定的函數(shù)創(chuàng)建句柄并將此句柄返回給變量fhandle 內(nèi)聯(lián)函數(shù):f = inline('expr','arglist')example: >>fhandle = @(x,y)(sin(x)+cos(y)+1)>>fhandle(pi/2,0)3 >>f = inline('sin(x)+cos(y)+1','x','y');>>f(pi/2,0)3 function out=f(x,y)out = sin(x)+cos(y)+1;

解方程組

解線性方程組 solve 解微分方程組dsolve 解數(shù)值解龍哥庫塔 ode y=dsolve('Dyt=y0*y')不明白

符號表達(dá)式

syms一次可定義多個符號變量sym建立單個符號 y=sym('sin(x)+cos(x)');diff(f,x,n)求符號表達(dá)式f關(guān)于x的n階導(dǎo)數(shù)

int(f,r,x0,x1)f為積分符號表達(dá)式,r為積分變量,x0,x1為積分上下限 example: syms x y;f = 2*x+y;h = subs(f,{x,y},{1:3,5:7});% h = [7,10,13];

多項式

系數(shù)矩陣p 符號表示:s=poly2sym(p)poly2str(p,'x')以字符串的形式查看以x為變量的函數(shù)

系數(shù)表示:sym2poly(s)多項式求值:polyval(p,數(shù)或矩陣)多項式求導(dǎo)polyder(p)求積分polyint(p)r = poly(p)求矩陣的特征多項式的系數(shù) roots(r)求多項式的根即p

MATLAB編程

輸入輸出 x=inputdlg('輸入說明文字');x=str2num(cell2mat(x));

age=input('how old are you:')

disp(age)fprintf('my age is %d.n',age);% 和C語言里的printf差不多

data.txt: 1 2 3 4 5 6 7 8 9

fid = fopen('data.txt','r');line = fgetl(fid);str2num(line);

A = load('data.txt');

save 默認(rèn)將當(dāng)前所有變量存到當(dāng)前目錄下的MATLAB.mat save mywork 默認(rèn)存成.mat格式

% 存到A中,再對A進(jìn)行操作

% 讀取一行 % 得到 1 2 3 % 有沒有類似C語言的輸入

savemydata.mat v1 % Use with literal filename save 'my data file.mat' v1 % Use when filename has spaces save(savefile, 'v1')% Use when filename is stored in a variable load 裝載當(dāng)前目錄下的MATLAB.mat load new.txt / load('new.txt')當(dāng)前目錄下不支持中文 load('路徑名+文件名',變量名列表)xlsread('路徑名+文件名')讀取excel文件

下載MATLAB學(xué)習(xí)心得體word格式文檔
下載MATLAB學(xué)習(xí)心得體.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    MATLAB學(xué)習(xí)心得

    MATLAB學(xué)習(xí)報告 一. 對MATLAB的認(rèn)識 正如課本《MATLAB教程及實訓(xùn)》中的前言所說,MATLAB是MathWords公司于1984年開發(fā)的,目前已經(jīng)發(fā)展成國際上最流行、應(yīng)用最廣泛的科學(xué)與工程......

    matlab學(xué)習(xí)心得

    學(xué)習(xí)MATLAB的心得體會 隨著期末的臨近,本學(xué)期的MATLAB的學(xué)習(xí)也就此落下了帷幕。回顧我之前學(xué)習(xí)MATLAB的歷程,我有以下幾點感悟: 1. 要有耐心。在編程序的時候少不了的要出現(xiàn)許......

    MATLAB學(xué)習(xí)心得

    學(xué)習(xí)Matlab對我的幫助及感想 專業(yè):通信工程 班級:141 姓名:張焱 學(xué)號:2014136123 不知是對老師的好感還是因為專業(yè)的需要,當(dāng)c語言的學(xué)習(xí)結(jié)束后我主動選擇了學(xué)習(xí)Matlab。以前的......

    matlab學(xué)習(xí)心得5則范文

    matlab學(xué)習(xí)心得 王信權(quán) 39172215 學(xué)習(xí)matlab是聽說它是一個功能強(qiáng)大的數(shù)學(xué)軟件,但是正被微積分的計算纏身,聽說有一個高級的計算器當(dāng)然高興,以后可以偷懶了,當(dāng)然現(xiàn)在不能偷懶。......

    matlab學(xué)習(xí)心得[五篇范文]

    1 回車:表示一個命令結(jié)束 2 一個命令行可以輸入若干條命令,各命令之間以逗號分隔。若一條命令后帶有分號,逗號可以省略。 3 若一條命令很長,可在一條物理行之后加上3個小黑點并......

    對matlab的學(xué)習(xí)心得

    Matlab的學(xué)習(xí)心得 通過初步對matlab的學(xué)習(xí),我覺得收獲很大。我了解到matlab是一個功能很大的數(shù)學(xué)實驗軟件,即一個很好的計算機(jī)數(shù)學(xué)軟件平臺。我在學(xué)習(xí)matlab主要是圍繞實驗,初......

    Matlab學(xué)習(xí)心得[優(yōu)秀范文5篇]

    Matlab學(xué)習(xí)心得 這個學(xué)期我們學(xué)習(xí)了Matlab,總體來說,這是一門挺難的課程。當(dāng)然我們的課時也是挺少的,我們也只是粗略的學(xué)習(xí)了下,所以對這門課程并不是很熟悉。不過學(xué)習(xí)了之后還......

    三體運動的matlab演示

    三體運動的matlab演示 figure('name','三體運動');%設(shè)置標(biāo)題名字 N=3; %x=zeros(1,N);y=zeros(1,N);vx=zeros(1,N);vy=zeros(1,N);ax=zeros(1,N);ay=zeros(1,N);ke=ones(1......

主站蜘蛛池模板: 少妇人妻偷人精品视频| 国产精品福利网红主播| 亚洲人成无码网站久久99热国产| 少妇被躁爽到高潮无码人狍大战| 亚洲欧美日韩一区二区| 色欲精品国产一区二区三区av| 人人妻久久人人澡人人爽人人精品| 国产精品一二三区久久狼| 天天av天天av天天透| 亚洲成色综合网站在线| 8av国产精品爽爽ⅴa在线观看| 亚洲欧美日韩v在线观看不卡| 国产精品无码一区二区三级| 麻豆aⅴ精品无码一区二区| 四虎成人精品国产永久免费无码| 少妇熟女久久综合网色欲| 丁香五月激情综合国产| 中文无码日韩欧| 国产精品自产拍在线18禁| 亚洲色精品vr一区二区三区| 伊人无码精品久久一区二区| 97精品一区二区视频在线观看| 国产无套粉嫩白浆在线观看| 好了av四色综合无码久久| 成人av无码一区二区三区| 欧美日韩国产精品| 乱人伦人妻中文字幕在线| 国产毛多水多高潮高清| 亚洲国产成人片在线观看| 亚洲乱码1卡2卡3乱码在线芒果| 黑色丝袜国产精品| 东京热加勒比无码少妇| 久久视频这里只有精品在线观看| 男人的好看免费观看在线视频| 久久国内精品自在自线波多野结氏| 成人国产精品一区二区免费看| 国产超碰人人模人人爽人人喊| 无码av免费一区二区三区四区| 四虎亚洲精品无码| 国产sm调教折磨视频失禁| 一 级做人爱全视频在线看|