第一篇:對matlab的學習心得
Matlab的學習心得
通過初步對matlab的學習,我覺得收獲很大。我了解到matlab是一個功能很大的數學實驗軟件,即一個很好的計算機數學軟件平臺。我在學習matlab主要是圍繞實驗,初步學習了一些簡單的矩陣運算以及簡單的圖形,在做書上的實驗中得到了實踐各種矩形的計算為我們提供了很多的方便,在我們的生活也有很大的作用。但現在我所學到的matlab技術還是很初步的,但是我已經了解到matlab的實用性很大,學習好這門技術對我日后的發展有很大的幫助,所以在今后的學習中,我會繼續深入學習這門技術。Matlab的功能強大,對我們現在學習的線性代數是非常有幫助的,利用這款軟件會是我們原本復雜的計算變得簡單明了。Matlab的優點計算方便、快捷、準確、操作方便,流程簡單。雖然matlab優點很多,但是我開始對matlab這門技術并不是很了解,開始以為只是一個計算矩形的軟件,但是隨著學習的深入我對matlab的了解也相應深入,才知道matlab不僅可以運算矩陣,運算處理一些數據,還可以用于編程并且和其他的計算機編程有很大的區別。Matlab是一種專業的計算機程序,主要用于工程科學矩陣數學運算。但我相信在未來的幾年里,它會漸漸發展陳一種非常靈活的計算體系,可以解決更多的技術問題。
Matlab是一個高級的矩陣/陣列語言,它包含很多語句,其中有控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)后再一起運行,就象C語言和C++一樣可以先定義后使用。并且新版本的MATLAB語言是基于最為流行的C語言和C++語言基礎上的,因此語法特征與C++語言極為相似,而且更加簡單,更加符合科技人員對數學表達式的書寫格式。使之更利于非計算機專業的科技人員使用。而且這種語言可移植性好、可拓展性極強,這也是MATLAB能夠深入到科學研究及工程計算各個領域的重要原因
第二篇:matlab學習心得
學習MATLAB 感想 學習了 MATLAB 這門課程,我了解該軟件的基本功能,也知道 了該軟件在我們生活中的重要地位。隨著社會的不斷發展,科技 的不斷進步,計算機的普及,它也被應用在越來越多的方面。MATLAB 的基本數據單位是矩陣,它的指令表達式與數學、工 程中常用的形式十分相似,故用 MATLAB 來解算問題要比用 C,FORTRAN 等語言完成相同的事情簡捷得多,MATLAB 的最突出的 特點就是簡潔。MATLAB相對于其他的一些編程軟件有許多的優點:
一、語言簡潔緊湊,使用方便靈活,庫函數極其豐富。
二、運算符豐富。
三、MATLAB既具有結構化的控制語句(如for循環、while循環),又有面向對象編程的特性。
四、語法限制不嚴格,程序設計自由度大。
五、程序的可移植性很好,基本上不做修改就可以在各種型號的計 算機和操作系統上運行。
六、MATLAB的圖形功能強大。用madlab創建矩陣時,方法有兩種:第一、可以直接依次輸入矩 陣各行各列的元素,但矩陣元素必須用[ ]括住,矩陣元素必須用逗號 或空格分隔,在[ ]內矩陣的行與行之間必須用分號分隔。第二、用 MATLAB函數創建矩陣。MATLAB可以進行矩陣的加減、乘除的元 素,求可逆矩陣、轉置矩陣,求矩陣的特征值,求線性方程組等等。MATLAB的功能是非常強大的,MATLAB不僅有強大的運算功 能,它還有強大的繪圖功能,我對它的了解也僅僅就是一點點,或許 說還沒有入門。比如說它含有豐富的內建函數,例如數學函數中的三 角函數、復函數、多項式函數、數據分析函數的求平均值、最大最小 值、排序等,以及邏輯/選擇函數如if-else等,還有用來模擬隨機發 生事件的隨機函數。這些我都不了解。雖學習MATLAB的時間雖然很短,但卻讓我了解到了它的強大和 它的功能。我想就算時間足夠,老師也不能把所有的都講解給我們,因為一個軟件的功能需要我們自己不斷的去摸索,老師也不可能知道 所有。老師只是個指路的明燈,最終的學習還是要靠自己。而且在摸 索過程中,我們能夠發現和體會學習的快樂!
第三篇:Matlab學習心得
? matlab博大精深,說到底我也只不過是個初學者,只是學的時間比新手長了一點,現在寫幾句給新手,希望能給你們有點幫助 1 學Matlab并不難,難的是學會怎么用。
2不要試圖掌握matlab的每一個功能,熟悉和你專業最相關的部分就可以了。不要問:明天要交作業了,哪位大俠幫忙寫個程序吧,或初學matlab,不懂呀,大哥大姐幫忙寫個程序之類的話
不要等到要用到才去學,如果你有興趣,你有時間,你可以多學些東西,說不定什么時候就用了,機會只偏愛那些有準備的頭腦,到時候就不會說什么,要做東西想讓人指點,基礎的東西來不及仔細看了,一寫程序嗎,低級錯誤滿天飛 不要說:不要讓我看matlab英文的幫助我看不懂--誰都是從不懂到懂的 不要擔心:我編程能力差,我一定用不好matlab。6 不要只問不學 7 學maltab要有耐心 看到某本書中或論壇的帖子中解決問題的方法要試著解決類似的問題,要舉一反三,要學會變通 有了問題先自己想,察看幫助,1個小時后沒有結果再問別人,不要一有問題就發問,然后什么都不管了,把希望寄托在別人身上 10 學會用搜索引擎,在網上可以找到很多資料,有的問題一搜索就能找到的,就不要來問別人了 11要多動腦,多動手寫程序、調試,看程序時候多想幾個為什么,理解別人程序中精華的東西,多自己調調程序,可以改改程序,把知識轉成自己的,弄懂一兩個經典例子比粗粗的看一大書要好,值得一提是不是一下子就能看懂相對比較長,比較復雜的程序的,要做的是自己慢慢去分析,利用已經有的資料和幫助,等慢慢搞懂它,要多看幾遍,相信多看一遍你就會有一些新的認識,一直到你已經掌握里例子的精華。多讀matlab高手寫的程序,帖子,找到一個高手,在幾個大的論壇可以搜索出一大堆的帖子,然后慢慢去看吧,從中可以學到很多東西,也許你會發現很多你都看不懂,這很正常,別人寫程序考慮的是能實現這樣的功能,運行效率等問題,而不是考慮是不是很容易能讓別人理解,你就看你現在能看懂,再看些通過你斷點調試,查help能看明白的,看不懂的就先放下,遇到好的和看不懂,你又很挺感興趣的話題,你先收藏起來,過段時間你再回頭看看,你會發現,每看一遍,你就會多懂一些東西,當你第三遍甚至第四遍看同一個程序的時候,也許你就會有豁然開朗的感覺。一個比較長的程序,首先不要怕長,把它分解成一句一句,一句一句看懂它。要明白一口吃不成胖子,好東西要慢慢體會,才能領會。電腦上復制粘貼很方便,對于別人解決的你專業上的問題,最好自己寫一遍,這樣印象深刻,對于不懂的函數用法的函數,help中查查,能看懂多少算多少,對于程序斷點調試一遍,弄清楚每個語句的功能,14 盡量擺脫c編程的習慣,總愛用循環,能不用的循環的盡量不用,掌握矢量化的精髓 善于總結,學習過的知識,看過好的帖子可以收藏起來,過段時間再復習一下,一段時間的積累,你會發現你的水平在慢慢提高 16 多用help,see also lookfor get,set 等常用命令 要大膽的去試,試過才知道可不可以,如有人問可不可以把多個子程序放在一個m文件中,呵呵,試試不就知道了 多參與討論,不要只關心自己的問題,也經常關注別人的帖子,從中也可以學到不少東西的 提醒一句,不要做只會下資料而不看的收藏家,這樣對你沒什么意義,書不在于多,真的看一兩本書也就夠了,以后要用的時候,再去查書,一味的東看看西看看,見了別人的資料,不關好不好,就留信箱的人,我感覺也不該這樣,有了那么多資料,就別想著還有沒有比這更好的了,開始學吧先寫這么多吧,希望對新手能有點用 感覺語言是相通的,不一定只針對matlab這門語言
如何寫程序,如果你還是初學者,那么盡量不要復制粘貼,那樣你是永遠也無法學會寫程序的。另外也不要對著別人的程序,一個字一個字敲進去,那樣的話你只能成為一名優秀的打字員。一個比較好的方法是先讀懂他,理清他的思路,然后自己動手寫,寫不出來的時間再看看別人的程序,然后對照的看,你的和他的程序差異在哪里,寫的過程就是提高的過程。
程序運行有錯誤怎么辦,好多錯誤。首先,別害怕錯誤,這是每一個人都會碰到的問題,大牛,小蝦都一樣,你對你自己說 這不機會又來了,調程序的過程就是提高的過程。不要一遇到錯誤就來論壇發問了,如何調,關鍵是看錯誤提示,看錯誤的類型及出現在哪條語句上。好好練自己的調試能力,這不僅可以幫你找到一些錯誤,有是碰到一些讀不懂的程序,借助斷點調試可以幫你讀懂程序
還不行怎么辦,用搜索引擎找答案(有時候把錯誤提示輸進去就可以找到答案了)
還不行,這才發貼和別人交流。。
寫程序原則 盡量寫的簡單 通俗容易懂,讓那些不如你聰明的人都能看懂,命名的時候做到見名知意,寫的時間多加點注釋,不然,不要說別人讀不懂你的程序,等過幾天,你自己也讀不懂了,可以看看matlab里的函數,注釋也寫的很詳細,當你覺得有些方法比較常用的時候,你可以封裝成函數,加上一些說明,以后要用的時候,直接調用就可以了,注重代碼的重用性。
勿在浮砂筑高臺,基礎很重要,為什么學matlab,如果你只是把它當成 c c++的附屬品,用這些語言的思維來寫一些奇怪的類matlab程序,我想你還是直接用c 或 c ++更合適,不要一開始就想著用matlab 做出什么東西,好好看一本matlab的基礎書,這些基礎對你以后的進階會很有幫助。再說混合編程,什么都不懂就想著去混合編程是不實際的,maltab版本 vs 的版本不同,都會對混合編程影響的。所以結果是對著別人的例子來做也不一定會做出來,一是別人講的有些細節問題沒講清楚,二是版本問題。就算做出來,如果不明白為什么要這樣做,又有多大意義呢。然后自己做一個,又不會了。說這些的目的無非是希望想做混合編程的朋友多了解一些基礎的東西,否則在混合編程這一塊上會浪費很多時間,結果還是沒有解決問題。
7.0系列 深入淺出matalb混合編程這本書是值得一看的。多看幫助之類的話這里就不多說了。
Recent developments in linear quadtree-based geographic information systems
第四篇:matlab學習心得
編程心得
1.helpwin只是尋找函數類,一般不如用doc(相當于幫助文檔中的搜索),但在用doc搜索不到幫助文件時可用helpwin,如找有關的幫助等;打開格式非標準的mat或xls等數據文件如dat文件或無后綴名的文件時,不要用打開方式打開,而應先打開應用程序如MATLAB或excel,然后在應用程序中打開數據文件,這樣能得到正確的行數和列數;lookfor可對M文件的第一行進行關鍵字搜索,比help條件寬松;MATLAB大小寫有區分。用which搜索路徑;要打開matlab自帶的m文件直接用open即可,不需要找到路徑,會在當前目錄和set path的路徑中搜索。矩陣的運算注意:標量與矩陣進行四則運算時該標量與矩陣的每個元素進行運算;兩矩陣相乘左矩陣列數須等于右矩陣行數;矩陣除法有左除(反斜杠)和右除/(斜杠),AB=inv(A)*B,A/B=A*inv(B);方陣的乘方運算有四種:A^n,A^p,s^A,s.^A,其中A為方陣,n為整數,p為非整數,s為標量;A’表示矩陣A的轉置,一般選中了Hermitian(共軛)復選框則元素帶共軛;funm(A,’fun’)表示矩陣的函數運算,要求A是方陣,fun為矩陣運算函數名;給矩陣賦值時維數必須匹配,用方括號,一個分號為一行。
3.數組的運算注意:數組乘法運算符為.*,表示兩數組中對應元素相乘;數組的除法運算符為.和./,表示對應元素相除;數組與數組運算時,參與運算的數組必須同維,結果為數組中每個元素進行運算所得;直接用結構名賦值即省略了(1);varargout返回輸出變量list即一系列變量名稱;feval(@fun,var1,?)用var1,?試算[evaluate]fun的值;讀二進制文件常用fopen()和fread()組合,matlab讀fortran寫出的二進制文件時往往要在fopen()中加'b';讀文本文件常用textread()和fopen();fscanf()組合,要注意格式,最好讀完后對照打開看看。
4.標準差std(x,flag,dim)默認flag=0,dim=1計算公式為 的平方根,flag=1時分母為n;可通過h=figure(i),后用get(h)獲得圖形對象所有屬性的當前值,其格式為:屬性名=屬性值;結構數組可在域名后加(a,b)再加.變量名,調用時輸變量名可使用tab完成;利用struct函數一次輸入多個結構元素時注意用單元數組,用{}而非[]。
5. 左除和右除的兩邊不一定是方陣,當A為m*n矩陣,B為列向量時,AB表示A*X=B在最小平方意義上的解,需對A進行QR分解,m
8. 低級文件I/O函數很重要,因為它可讀寫二進制文件,便于與FORTRAN結合;讀寫之前先用fopen(filename,mode),注意都要加單引號,返回值如ans=0表示操作成功,-1表示不成功;一定要注意r和w因為w會刪除原文件所有內容;讀用fread(fid,count,precision,skip)其中precision如'uint8=>char'讀取文本文件,注意在fclose(fid)之前是連續讀的,不指定precision默認按字節讀取可能會出現很多元素為0;fwrite(fid,A,precision,skip)用二進制格式寫入文件,skip參數對于將數據插入到已知長度的記錄中非常有用;重設文件指針位置用fseek(fid,offset,origin)表示在fid指定的文件上按照origin給出的參照點,相對移動offset個字節,注意如果指針不在開頭要重置到開頭origin應選'cof'當前位置而不選'bof'文件開始,重置完后可用ftell(fid)知道指針當前位置相對于bof的字節數,還可用ferror(fid)查詢錯誤信息;還可用frewind(fid)函數將文件位置指針返回到文件起始位置;從文本文件讀字符串行用fgets(fid,nchar)表示讀一行文本并帶有行結束符,每次讀nchar個字符直到遇上結束符。9.如果運行的M文件有錯誤,而且在命令窗口又要運行M文件中定義錯誤的內置函數時可能會出現錯誤,這時應改工作目錄;有些內置函數可在命令窗口運行但在M文件中運行可能會出現錯誤,如sphere(n);腳本M文件與命令窗口公用變量工作區,而函數M文件有單獨的變量工作區,切實注意了;關系操作表達式返回的是邏輯型值即0和1。
10.數組維數擴展時下標不要用1,因這是默認下標用1后結果是重新賦值;不同數組類型轉換如cell2struct等之前一定要先看數組尺寸size(array);變量名切記不要用函數名,否則調用函數時會出錯還不知錯在哪,因MATLAB優先使用變量名而非函數名,比如定義了變量max再調用max()函數時就會報錯Subscript indices must either be real positive integers or logicals;中括號加引號用于多個文件名可以,用于多個變量名不行;簡單統計量比如最大值,最小值,平均值加減后再統計和統計后再加減結果一樣;函數不管用或者出錯應檢查是否不小心加了等號。
11.設置坐標軸刻度和屬性時用set(gca,'xtick',數值數組);set(gca,'xticklabel',字符串數組);切記是label不要寫成lable;用box off可以去掉右邊和上邊的刻度和邊框;把右邊和上邊分別作為y和x軸可以加畫圖形,但最好不用plot而用line;有關坐標軸設置的例子可見我的程序plotNino.m;要實現坐標軸隔點標注數值且所有點間隔線均保留需設置兩次坐標軸,第一次顯示所有間隔線第二次用ax2=axes()后隔點標注;放大工具只對ax2有效;標注時字符矢量用{}且非數字字符必須加引號;注意annotation()中[x y w h]的x,y是對整個figure而言;標記單個數據點用scatter()即可。
12.MatLab小波分析工具箱中一些學習心得:進行多分辨率分析時,wavedec()得到的小波系數是由最后一層的低頻系數和各層的高頻系數首尾相連而成,不是相加;用wrcoef()可重構各單支系數的對應信號且saN+sdN+sdN-1+?+sd1近似等于原始信號s;用waverec()一次重構的結果和單支重構的和稍有差別但差別很小如e-15;用wavedec()時注意有些小波函數不能用如Morlet小波基等,具體可看wfilters();小波分解再重構后與原始信號相差最小的小波函數為db1即Haar小波基;
13.只有函數式M文件才能定義函數,腳本文件和函數不能寫入同一個m文件中,即腳本文件中不允許出現function()語句但可以調用同目錄下函數文件中的函數;函數文件要想保留一些中間變量的值就要在函數外部調用因為函數調用結束時會銷毀臨時變量空間,需另寫腳本文件,要不然就將需要導出的變量作為返回的參數或者用global申明全局變量;要使函數文件中的函數易被其他腳本文件調用,文件名最好為第一函數名;一張圖中畫多張子圖時注意subplot(‘Position’,[ ])和axes(‘OuterPosition’,[ ])在[]中值一樣時子圖的位置大小不一樣,axes的[]所給區域按比例縮小包含坐標軸標題等故值易確定但調用時要加(..,’Parent’,*),此外subplot()可有系統給定區域;
MATLAB中內置的函數
linspace(a,b,n)生成a~b之間線性分布的行向量,n默認值為100。
logspace(a,b,n)生成10^a~10^b之間按對數等分的n個元素的行向量,n默認50。zeros(m,n)生成m*n的全0矩陣;
ones(m,n)生成m*n的全1矩陣 rand(m,n)生成m*n均勻分布的單位間隔上隨機矩陣,取值范圍0.0~1.0 randn(m,n)生成m*n正態分布的隨機矩陣,取值范圍是整個實數區間
eye(m,n)生成m*n的單位矩陣; magic(n)生成n階魔方矩陣,n>=3 triu(X)生成X矩陣的上三角矩陣; tril(X)生成X矩陣的下三角矩陣
flipud(X)使矩陣沿水平軸上下翻轉; fliplr(X)使矩陣沿垂直軸左右翻轉;
Flipdim(X,dim)使矩陣沿特定軸翻轉; rot90(X)使矩陣逆時針旋轉90度 cat(n,A1,A2,?,Am)n=1時子矩陣上下排列,n=2時子矩陣左右排列,n=3時子矩陣數m為第三維; repmat(A,行,列,頁,??)模塊矩陣A按后邊格式重復排列
ndims(P)返回數組P的維數; size(P)返回向量其元素為數組各維的大??; length(P)返回數組P行數或列數的最大值
[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為正整數R為有序上三角陣;[Q,R]=qr(A)
求正交矩陣Q和上三角陣R使A=QR;
T=schur(A,flag)返回正交矩陣U和schur矩陣T使A=U*T*U’;
rsf2csf(VR,DR)將實舒爾形式轉化成復舒爾形式; gsvd(A,B)廣義奇異值分解; qz(A,B)特征值問題的QZ分解; hess(A)海森伯格形式分解;
sparse(A)返回A的稀疏矩陣形式; full(S)將稀疏矩陣轉化為全元素矩陣; spy(S,’lineSpec’,markersize)用圖形顯示矩陣,點表示矩陣中非零元素位置。colmmd(S)返回稀疏矩陣列的最小度排序向量p,按p排列后的矩陣為S(:,p)。
setfield(ps,{i,j,k},域名,賦值)修改結構數組ps中域的存儲內容,返回維數為i*j*k。lower(string)把字符串中的大寫變為小寫。
strncmp(‘str1’,’str2’,n)比較兩字符串的前n個字符,str2可換為單元數組C,返回邏輯數組
lookfor name 尋找第一行注解H1中含有name的M文件。
findstr(str1,str2)先比較兩個字符串,然后在長的中找與短的匹配的子字符串,每找到一次返回匹配起始點的位置為數組元素。
fscanf(fid,format,size)從fid指定的文件讀size個數據并根據format指定的格式轉換,其中format如%c,%f,%d等,size為[m,n]時表示m*n矩陣按列存放,缺省讀全部數據; fprintf(fid,format,A)按format指定格式轉換矩陣A中數據并將它們寫到fid指定文件,缺省fid時,數據輸出在屏幕上。
Repmat(A,m,n)A為子矩陣,復制m*n次; fix(A)返回數組中每個元素取整后的值; reshape(A,m,n)把數組A進行重新排列,按列方式操作;
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,...)把字符串或者單元數組s1,s2,s3進行水平連接
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{:})復制單元數組的內容給變量Y1,Y2,Y3,? Num2cell(a,[i j])a為數值陣列,返回單元陣列每個單元為a保持第i,j維尺寸不變的數組
《MATLAB基礎與編程入門》
Page 2: MATLAB核心模塊有兩大分支分別以MATLAB為基礎和以simulink為基礎。MATLAB 2006b即MATLAB 7.3。MATLAB compiler能將M文件編譯生成為函數庫或可執行文件,使其能與其他語言如C/C++混合應用,MATLAB builder可將函數文件打包成com組件或.net組件、excel插件、java對象,將其應用程序算法集成到開發工具或應用軟件中。MATLAB的工具箱可提供函數給用戶直接使用,且其算法是開放和可擴展的。MATLAB提供了與各種設備進行數據I/O的交互工具和函數等。
Page 4: 工具箱包括:數學與數據分析,如spline 仿樣,mapping 繪圖、映射,genetic algorithm and direct research 遺傳算法和正變形研究等;數據采集與測量測試,如database 數據庫,excel link鏈接Excel等;信號處理與圖象處理,如system identification系統辨識,wavelet 小波分析,filter design 濾波設計等;控制系統設計與分析,如 fuzzy logic 模糊邏輯,robust control 強控制等;財經與金融,如 financial time series 金融時間序列,GARCH 廣義條件異方差等;應用程序集成與發布,如 MATLAB report generator 報告生成器,MATLAB web server 網絡服務器,MATLAB builder for.NET 編碼器等。Page 5: simulink是框圖設計環境,可對各種動態系統建模、分析和仿真,Stateflow可用來進行邏輯驅動過程的仿真。Simulink 可將用C、C++和fortran語言編寫的算法集成到框圖中,其實時代碼生成工具可進行代碼驗證。
Page 9: Real-Time Workship(RTW)可生成標準的C/C++代碼并具備生成其他語言代碼能力
《MATLAB編程基礎與典型應用》
Page 8: MATLAB默認每行命令產生的變量結果都顯示,加上英文狀態下;才不顯示。可用連續3個或以上的黑點?表示續行,但notebook中不能用。%表示其后一行的內容為注釋。Page 10: 常用操作指令包括:clc, clear, clf, who, whos, delete
Page 43: MATLAB中的關系運算符有<,<=,>,>=,==,~=;邏輯運算符有&,|,~,xor,&&(先決與),||(先決或),先決表示左邊的運算符合要求就不需執行右邊運算。Page 54: 稀疏矩陣大部分元素為0,故只需儲存非零元素的下標和元素值。Page 72: 數值數組和字符串數組中存儲單元的數據類型相同,使用()操作;單元數組中每個單元存放的數據可能都不一樣,使用{}操作,獲取單元數組內容時圓括號只顯示單元,花括號才顯示內容。
Page 77: 結構數組組織數據的能力比單元數組要強些,可通過struct(域名1,賦值,域名2,賦值??)函數創建;獲取結構數組域中的具體內容使用符號.,也可用專用函數getfield()獲??;修改結構數組中域存儲內容的函數是setfield()。
Page 81: 多項式以行向量的形式存放且以降冪形式出現,若缺少某冪次項則該項系數為0 Page 134: 句柄是圖形對象的標志代碼,標識代碼含有圖形對象的各種必要的屬性信息;圖形對象的所有屬性都是由屬性名和屬性值組成,對圖形對象屬性操作可實現不同表現效果,可通過句柄控制;用get(get(gca,'children'))命令可看到軸的子代的各種屬性值;可對圖形對象設置缺省對象屬性來實現繼承操作,還可用set(h,’.’,’.’)設置各種屬性。《精通MATLAB7編程與數據庫應用》
Page 5: 為調試程序而進入debug方式時,提示符變為K>>;運算符兩邊的空格隨意添加后無區別;在命令歷史中查找,可將光標定位于某行后敲要查找的語句的首字母;可將用得多的幾條語句選中后在右鍵菜單選”create shortcut”創立快捷鍵;命令窗口輸入pathtool或選File->Set path可設置搜索路徑。Page 19: 函數的輸入參數用圓括號括起來用逗號分隔,輸出參數在等式左邊用方括號;語句的續行可在結尾用省略號(?);一行中可寫多個語句,語句用逗號或分號隔開,若想寫完多行命令再運行可按shift + enter組合鍵;還可使用“Tab完成”,在命令和editor窗口寫入文件名、變量、結構和函數名時只寫入前面的幾個字符后按Tab鍵。Page 24: 變量名是否正確可用isvarname查看0表有誤;變量類型包括三種,常用的是局部變量,全局變量要用global聲明且每個使用函數都要聲明,永久變量(一直在內存中)要用persistent聲明。
Page 171: 程序開發的建議:
1. 化復雜為簡單:將每個任務做成一個獨立的函數,函數盡量短;用數學語言寫出步驟和流程,再轉換成程序語言;選擇正確的數據結構(如哪種數組)。
2. 遵循的原則:使用描述性的變量名和函數名,盡量不用縮寫;函數前面寫幫助的注解,說明函數功能;一行不要超出80列以便打?。缓瘮抵槐涣硪粋€函數調用,把被調函數作為子函數與主函數放在同一個M文件上。
3. 函數命名的唯一性:用which –all 函數名 檢驗。
4. 分步寫程序,分步調試:對較大程序,一次寫成一部分,然后測試;能正常工作且輸出結果合理,再寫下一部分;修改也一樣,每次調試一部分。
5. 程序最后測試:用debugger,可記錄下被執行的每一行代碼;用不同的輸入組合測試,讓每一行至少執行一次。Page 173: 在命令窗口的命令提示符下輸入M文件名可運行該M文件;MATLAB與其它語言的區別之一是過程控制語句可能用到數組或矩陣;對if條件判斷,若邏輯表達式非標量,那么它的所有元素值都非0,if條件才能滿足,也可以是空數組,表示條件為假。Page 175: 分支語句switch后的表達式可以是函數或數值或字符串;循環有兩種:次數確定的和依條件結束的;for循環中可用數組控制循環次數,MATLAB把列數作為循環次數;for語句可寫在一行,分隔符用逗號;continue回到循環頭,break退出循環,嵌套循環中都作用最內層循環;錯誤控制語句try?catch?end執行時,try?catch范圍內出現錯誤可轉到代碼段catch?end做出響應,若此段還有錯誤則結束程序執行;return語句可強制結束當前運行的程序。Page 179: 腳本(scripts)與函數的區別:腳本簡單執行一系列語句和需多次運行的文件,不能接受輸入參數也不返回輸出結果,變量保存在基本工作區;函數有定義語句function,有輸入輸出,變量有單獨工作區;輸出用[],輸入用()。
Page 181: 默認下M文件名與第一個函數名相同,若不同需用文件名引用函數;用exist函數識別是否為M文件函數,非0則是;用which函數找到M文件函數的源碼;
《MATLAB程序設計與應用》
Page 242: 在M-book 中,在word與MATLAB之間進行傳遞的內容稱為單元(Cell),輸入輸出是指對MATLAB而言;m-book最重要的操作就是輸入單元的定義與執行,其方法是:先在文檔中輸入命令后選中命令行,再按組合鍵Alt + D(=Define Input Cell),則命令行變成綠色的輸入單元,然后按組合鍵Ctrl + Enter(=Evaluate Cell),執行后產生藍色的輸出單元;也可選中命令行后直接按組合鍵Ctrl + Enter輸入并執行;注意:命令和標點須在英文狀態下輸入,MATLAB的續行符不能用于m-book,它會自動換行無需加回車符,修改后執行新結果會覆蓋掉老結果。
Page 247: 可用evaluate loop實現單元的循環執行,用purge output cells刪去選中的輸出單元,用undefine cells把單元轉換為文本;輸出格式控制包括輸出數據控制和圖形控制,可通過notebook->notebook options->embed figures in m-book是否選中控制輸出圖形是否鑲嵌在m-book文檔中;若輸出圖形背景色不是白色可在MATLAB命令窗口運行whitebg('white')再重新運行輸入單元;可通過“樣式和格式”修改Output等的樣式。Page 251: Simulink主要對動態系統進行建模、仿真和分析,提供圖形用戶界面GUI,用戶可用鼠標從模塊庫中調用標準模塊并適當連接以建模同時用參數對話框設置參數,建模后選擇仿真參數和數值算法便可啟動仿真程序對系統仿真;simulink仿真模型表現為方框圖,其擴展名為.mdl,數學上體現了一組微分方程或差分方程,通常包含3類模塊:信源(source)、系統(system)、信宿(sink儀器);可用format菜單調整模塊方向,改變模塊前景色、背景填充色或者模型背景色,產生陰影效果等,處理模塊名,給連線加標志;模型連接須從一個模塊的輸出端連到另一個模塊的輸入端,默認是折線要用斜線需選中連線再按住shift鍵拖動;連線分支操作是鼠標移到分支點位置先按下ctrl鍵再拖動到目標模塊的輸入端;選定模塊后再用模型編輯窗口edit菜單可設置模塊參數,模塊屬性等。
Page 265: 系統仿真過程中,事先須對仿真算法、輸出模式等仿真參數進行設置,方法是:從模型編輯窗口simulation菜單中選擇configuration parameters命令打開仿真參數對話框設置仿真參數;設置仿真參數完后,從simulation菜單中選擇start項便可啟動當前模型的仿真,此時stop命令變成可選以供中途停止;為觀察仿真結果變化軌跡可以:把輸出結果送給scope模塊或者XY graph模塊,把仿真結果送到輸出端口并作為返回變量后用MATLAB命令繪制該變量變化曲線,把輸出結果送到to workspace模塊從而直接存入工作空間后用繪圖命令繪制出變量變化曲線;系統仿真步驟如下:建立系統仿真模型包括添加模塊、設置模塊參數以及進行模塊連接等操作,設置仿真參數,啟動仿真并分析仿真結果。
Page 134: 要在MATLAB中使用其他軟件的圖象需用[x,c]=imread(filename,fmt)讀取該圖象,其圖像通常由數據矩陣x和色彩矩陣c組成,真彩色圖像的數據矩陣為三維,三個面上數據分別是RGB三種顏色的強度值,每個元素對應圖像中一個像素點;可用colormap(c)函數設置色圖;影片動畫制作有三個函數:moviein(n)建立一個足夠大的n列矩陣,a(:,n)=getframe將n幅畫面信息保存矩陣a中,movie(a,m)播放由矩陣a定義的畫面m次;實時動畫制作是先畫出初始圖形,再計算活動對象新位置并顯示新對象擦除舊對象,可通過EraseMode屬性實現一般選Xor,只繪制與屏幕顏色不一致的原對象點;可通過改變數據屬性來重新繪圖,沒改變一次就應用drawnow命令刷新屏幕一次。
Page 311: mat文件是MATLAB數據存儲的默認文件格式,以雙精度二進制格式保存數據,它由128字節的文件頭和其后的數據單元組成;MATLAB提供了一個子程序庫使用戶可以在C/C++,FORTRAN中直接調用這些子程序來創建和讀取mat文件;操作mat文件的API函數封裝于兩個標準庫文件:libmat.lib和libmx.lib,存放在binwin32相應子文件夾中,在externinclude中有與前面兩個庫文件對應的.def文件:libmat.def,libmx.def,其導出函數原型位于同目錄下的mat.h,matrix.h中,前者包含mat文件的創建讀寫等函數的定義,后者包含MATLAB中基本數據類型和矩陣的定義;在FORTRAN語言中mat文件操作函數有: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為矩陣數目,pm是mxArray結構體指針,mode為打開文件方式。Page 315: MATLAB編譯器(MCC)可將m語言編寫的函數文件(腳本文件不行)轉換成C/C++源代碼,經編譯鏈接后可生成函數庫、可執行程序、COM組件等,從而提高程序執行效率豐富程序開發手段并隱藏算法源代碼;使用MCC需安裝MATLAB和一種C/C++編譯器,如VC++6.0,要生成獨立應用程序需安裝相應數學庫和圖形庫;編譯器配置即執行命令:mbuild –setup 后按提示選取一種編譯器(通常安裝VC++6.0后選擇它)生成批處理文件并注冊相關dll文件,mbuild通過調用外部的C/C++編譯器把M文件翻譯成C/C++源代碼然后與MATLAB的C/C++數學庫、圖形庫鏈接得到獨立可執行程序;執行命令為:mcc –m –I /files_source(源文件路徑)–d /files_target(目標文件路徑)*.m ;離開MATLAB執行exe文件時要把生成的所有文件包括相應庫文件全部帶上。
Page 319: MATLAB提供了客戶/服務器(Client/Server,C/S)功能,利用動態數據交換(DynamicDataExchange,DDE)功能和ActiveX自動化服務功能,可以實現在其他程序中對MATLAB程序及函數的調用,且通過mxArray與工作空間交換數據,從而增強其他語言的數值計算能力和數據可視化能力;MATLAB引擎是一組函數庫,他提供了一種在用戶程序進程中與MATLAB進程通信的方法,在WINDOWS下使用ActiveX技術實現,使用組件對象模型(ComponentObjectModel,COM)接口;C語言MATLAB計算引擎包括引擎函數和mx-函數兩類,常用引擎函數有engOpen, engClose, engGetVariable, engPutVariable, engEvalString等,mx-函數的具體用法參見幫助文件中section為External Interfaces Reference部分;引擎編程首先要將mxArray轉換成MATLAB中可操作的形式,將源程序編寫存盤后再用mex命令對源程序文件進行編譯,注意源文件中不能有中文(即使是注釋);mex用來編譯簡單文件合適,但工程復雜時需在VC++6.0的集成環境中編譯鏈接。
Page 324: 常用FORTRAN引擎函數有engOpen(startcmd), engClose(ep), engGetVariable(ep,name), engPutVariable(ep,name,pm), engEvalString(ep,command)等,其中startcmd 為引擎參數(字符型),ep為引擎指針(整型),name為矩陣名,pm為mxArray矩陣指針,command為MATLAB命令;在MATLAB命令窗口使用的編譯命令是optsfile=[matlabroot 'binwin32mexoptsdf60engmatopts.bat'];mex('-f',optsfile,'*.f90');但有時候沒有df60engmatopts.bat文件,這時候需在VisualFortran的集成環境中編譯鏈接;可先用VF打開該f90文件然后選Tools->Options->Directories,在Include files中添加matlabrootexterninclude,在Library files中添加externlibwin32microsoft,然后選Project->Settings->Link,在Object modules中添加libmx.lib libmat.lib libeng.lib,再用默認的編譯鏈接可生成可執行文件*.exe。
Page 325: MEX(MATLAB executable)動態鏈接函數接口使MATLAB可直接調用C,FORTRAN語言編寫的算法程序,應用如下:對已有的C,FORTRAN子程序通過添加入口程序mexFunction可由MATLAB調用而不必重編M文件,可把要求大量循環迭代的部分用C語言編寫為MEX文件提高計算速度,直接控制硬件如數據采集卡等;MEX文件優于M文件執行,用C語言編寫MEX文件的特點是編程靈活指針功能強,但應注意C和MATLAB中數據存儲方式的差別,其源程序包括兩部分:入口子程序(作用是建立通信聯系),計算子程序(可是普通的C程序),注意都要包括頭文件mex.h;可在命令窗口輸入mex filename.c編譯MEX程序,但在VC環境下更好,項目類型為Win32 Dynamic-link library,(設置環境和參數都較麻煩)編譯鏈接無誤后產生*.dll,運行時會自動打開新的MATLAB應用程序。
Page 330: FORTRAN語言數值計算功能強但指針功能弱,其MEX文件同樣由入口子程序和計算子程序組成,它只支持雙精度類型和字符串類型的數據;mexFunction()中參數的意義和C語言一樣,入口子程序也和C語言大體相同,編譯時先輸入命令mex –setup選擇DigitalVisualFortran6.0作為默認編譯器,有些MATLAB軟件里沒有(如我的只能用VC++);集成環境中編譯步驟如下:新建一個項目類型為FortranDynamicLinkLibrary,選Project->Add to project->new->Text file創建與項目同名的定義文件(*.def),選Tools->options->directories-> include files添加externinclude,library files添加libwin32digitaldf60,選project->settings-> output file name輸入*.dll,Object modeles增加libmx.lib,libmex.lib,將文件加入到項目中再進行編譯鏈接,可生成*.dll;將MATLAB數據接口和其他開發環境結合可充分發揮數值計算長處避開執行效率低的不足,MATLAB還提供了與excel中數據交互的工具箱、VB算法庫及MATLABwebServer可通過HTTP協議在安裝了web服務器主機上提供MATLAB計算遠程服務,硬件操作方面MATLAB提供了串行通信對象操縱串行口并可通過mex程序調用設備驅動程序?!禡ATLAB7.x程序設計語言》
Page 266: 建立多維數組有四種方法:利用下標建立,如2×2的矩陣也可看作是2×2×1的數組可擴展維數,標量輸入表示擴展維元素均相同;利用特殊數組函數(如rand, randn, ones等)可直接產生多維數組,也可用repmat(A,m,n)直接產生;利用cat(n,A,B)連接A,B矩陣,n為指定維數,連接時是最后一維變化;編寫M文件將記錄組合成多維數組;ndims獲得維數,size得到各維尺寸,whos得到數組存儲格式。
Page 269: 多維陣列(即數組)的下標訪問即采用各維的下標訪問其元素,可用向量來表示多個元素,: 表示其他維固定該維變化的所有元素還可用a:b取出部分元素;陣列重新排列可用reshape函數按列重排,用squeeze函數刪除單點維(尺寸size為1的維);序列變換可用permute函數改變指定維次序。
Page 272: 面向向量的函數(如sum,mean,prod等)通常在第一個非單點維上操作且允許指定的維,也有例外如cross函數;元素對元素的操作函數(如三角、指數函數等)對每個元素進行同樣操作,算術、邏輯、關系操作符也按元素對元素方式處理,有一個為標量則對陣列所有元素與該標量進行同樣操作;面向矩陣的函數(如線性代數函數)不能用于多維陣列,需從中取出維數為2的一部分進行操作;RGB(m,n,3)的三色原理Color=0.3*RGB(:,:,1)+0.59*RGB(:,:,2)+0.11*RGB(:,:,3)。Page 273: 結構陣列由多個域構成,不同域可存放不同類型的數據,可用結構名(下標).域名對結構陣列賦值;用結構名顯示結構信息,只有一個結構元素顯示各元素值,可用rmfield函數刪除錯誤域名;用struct函數可產生一個結構元素的結構數組,再利用單元數組{}可輸入多個結構元素;訪問結構數組中的元素可用下標,利用getfield(結構名,{下標},’域名’,{a:b,c:d})可得到域的部分值(域元素),利用setfield函數可改變結構的域值。Page 277: MATLAB函數和操作符可用于結構數組中的域和域元素,可用循環來完成指定功能,還可對同名域的數據用函數直接處理;結構陣列的數據組織方式有平面組織和元素對元素組織等,如對三個獨立存儲矩陣,平面組織方式下每個域是一個平面的數據(矩陣),這樣容易提取平面數據并擴展平面個數,訪問子集時稍麻煩,元素對元素組織結構的建立需用循環,訪問子集較容易但訪問平面還要用循環;結構陣列的域值可以是另一個已定義過的結構,即結構嵌套,如用struct建立一個結構元素再用賦值語句*.原域名.域名擴展。
Page 282: 單元陣列中每個單元可以是標量、向量、矩陣、字符陣列、結構陣列、多維陣列等,在建立單元陣列之前應確保不存在同名數值陣列否則會導致錯誤;對單元陣列賦值時應使用花括號,放左邊較方便,可用cell(m,n,?)預分配空單元陣列;顯示單元數組可直接輸入數組名顯示單元信息,也可采用celldisp函數顯示詳細信息和cellplot函數顯示存儲結構圖形;使用單元陣列數據也用下標訪問但注意括號,訪問一個單元用花括號,訪問單元中的元素和部分單元用圓括號;刪除元素也用賦空值,如A(:,2)=[]后A可能成了一維單元陣列。
Page 285: 花括號內采用冒號操作符相當于指示多個獨立的單元內容如A{m:n},形如[a{1};a{2}]可構造數值陣列;可用單元數組代替函數輸入、輸出、顯示操作等的變量列表,如[a{1:2}]=eig(B)此時a{1}為特征向量(模態)矩陣a{2}為特征值(規范)矩陣;利用下標可將函數和操作符應用于單元陣列,用循環可對所有單元進行處理;單元陣列比結構陣列更具包容性,它可在一條賦值語句中訪問多個數據域,如使用[a,b]=c{1:2}相當于a=s.f1;b=s.f2其中c為單元陣列,s為等價結構陣列;利用花括號、cell函數及賦值語句可建立嵌套的單元陣列,不用cell函數預分配完全可以但賦值系統會花更多時間;單元陣列與數值陣列之間的轉換應采用循環程序,num2cell可實現數值到單元。
Page 290: 多維單元數組可利用cat函數連接產生,如A,B為2×2的單元數組則可用cat(3,A,B)生成2×2×2的多維單元數組;多維結構數組可利用直接賦值或cat函數產生,定義后可用結構的域名來訪問還可對其數據應用函數和操作符;利用單元數組還可將具有不同域結構的結構數組存儲在一起,每個單元為一個結構數組;多維數值陣列適用于規則數據,結構陣列適用于不一致的數據,單元陣列可用于任意數據混合;一般結構名首字母大寫,單元數組名大寫,其余名稱小寫,較復雜的數據庫用單元中有結構,結構中有數值和字符的形式。
Page 314: MATLAB中字符以其ASCII碼表示,每個字符都采用16位的ASCII碼存儲,字符串即一維字符數組;double函數可把字符串中每個字符轉變成ASCII碼,char函數可把ASCII碼數組轉變成對應字符串;建立二維字符數組時應注意確保每行上的字符數相等,方法是先disp每行字符串的長度length()后用blanks函數在較短的字符串末尾補上空格;從字符數組中提取字符串時,可用deblank函數刪除末尾多余的空格;利用cellstr函數可將字符數組變換成字符串單元數組,每個單元均為字符串且已刪除末尾空格,利用char函數可進行其逆操作,且可自動在每行末尾加上適當空格。
Page 317: 比較兩字符串是否完全相同用strcmp函數,strcmpi函數比較時忽略大小寫,strncmp函數比較兩字符串前n個字符是否相同,相同時,返回邏輯真,值為1不同為0;可用MATLAB關系操作符逐字比較兩個字符串是否相同或大小關系,采用的是ASCII碼,表達式為真值為1;可用isletter函數逐字比較字符串是否全由字母構成,是則為1,isspace函數逐字比較字符串是否有空格,還可用或操作符檢測字符串是否全由字母和空格構成。Page 319: 利用findstr和strrep函數可實現字符串中部分字符的搜索與替代;用strtok函數可找出第一個分隔符之前的字符串,若有n個單詞可用循環和array=strvcat(string,n)從英文句子中提取單詞;MATLAB提供了一組函數如int2str,num2str,bin2dec,hex2dec,base2dec等在各種數制和字符串之間進行變換;只有用num2str函數才可將含小數的數值變換成字符串如在圖形標記中使用數值,用mat2str函數可將矩陣變換成字符串形式。
第五篇:MATLAB學習心得
MATLAB學習心得
MATLAB命令
要查詢某一命令是在搜尋路徑的何處,可用which命令: >>which fact E:studycodematlabfact.m
what 列出當前目錄下的.m文件和.mat who:顯示當前所有變量的簡單列表 whos:顯示當前所有變量的詳細信息
disp打??;clc清屏;clf清圖;
close all 關閉所有圖形; clear 清除所有變量
esc 清除一行ctrl+c中斷程序運行
tic 開始計時;shift+enter換行;toc停止計時 % 行注釋; %{……%} 塊注釋
%% + 空格 + 模塊名添加程序塊使得模塊化 三個小黑點連續換行;或者shift+enter語句換行 cd 路徑改變當前目錄
elseif沒有空格 switch
case(不需要用break跳出)...otherwise end
funtool函數計算器
eval('MATLAB表達式')執行一個MATLAB表達式 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語法與繪圖文件夾,詳細介紹了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);% 計算函數值,zz也是25x25的矩陣 mesh(xx, yy, zz);surf(xx, yy, zz);
% 畫出立體網狀圖 % 畫出立體曲面圖 figure(n):打開編號為n的圖形窗口
subplot(m,n,p):分割圖形顯示窗口為m*n塊,p為子塊編號 axis([xminxmaxyminymax]):給出區域
text(x,y,'字符串')在坐標(x,y)處顯示字符串 gtext('字符串')通過鼠標選擇說明文字的位置 title('圖標標題')xlabel('x坐標軸名稱')ylabel('y坐標軸名稱')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.所有的數都非零返回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):將矩陣復制m*n份
矩陣變換 rot90逆時針旋轉90度flipud上下翻轉fllplr左右翻轉
單元數組可以存放不同的數據類型
>>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):圖形化顯示單元數組的結構
行簡化階梯型矩陣 rref(A)求矩陣的秩 rank(A)det(A)求行列式 [V D] = eig(A):
D對角線上的元素為A的特征值,V為相對應的特征向量構成的矩陣 當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畫符號函數
擬合工具箱 %{ yy = polyval(z,x);plot(x,y,'r*',x,yy);%}
函數的3種使用方法
利用function直接定義函數,要求文件名和函數名一致,函數文件名不能由數字組成 函數句柄實現對函數的間接調用 fhandle = @M文件名
匿名函數:fhandle = @(arglist)expr由輸入參數列表arglist和表達式expr確定的函數創建句柄并將此句柄返回給變量fhandle 內聯函數: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 解數值解龍哥庫塔 ode y=dsolve('Dyt=y0*y')不明白
符號表達式
syms一次可定義多個符號變量sym建立單個符號 y=sym('sin(x)+cos(x)');diff(f,x,n)求符號表達式f關于x的n階導數
int(f,r,x0,x1)f為積分符號表達式,r為積分變量,x0,x1為積分上下限 example: syms x y;f = 2*x+y;h = subs(f,{x,y},{1:3,5:7});% h = [7,10,13];
多項式
系數矩陣p 符號表示:s=poly2sym(p)poly2str(p,'x')以字符串的形式查看以x為變量的函數
系數表示:sym2poly(s)多項式求值:polyval(p,數或矩陣)多項式求導polyder(p)求積分polyint(p)r = poly(p)求矩陣的特征多項式的系數 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 默認將當前所有變量存到當前目錄下的MATLAB.mat save mywork 默認存成.mat格式
% 存到A中,再對A進行操作
% 讀取一行 % 得到 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 裝載當前目錄下的MATLAB.mat load new.txt / load('new.txt')當前目錄下不支持中文 load('路徑名+文件名',變量名列表)xlsread('路徑名+文件名')讀取excel文件