matlab 程序设计
1、M文件
??用Matlab 語言編寫的程序,稱為M文件,后綴名為 .M。實質上M文件也就是一個文本文件,可以使用任何編輯程序來建立和編輯,默認使用Matlab提供的文本編輯器打開進行編輯。
??在進一步探討M文件之前,我們先回顧一下我們上一篇blogMatlab基礎知識中講解使用了那些類型的文件:
- 內存變量文件 后綴名.mat
- 用 .M 文件 生成矩陣
- 用.dat文件生成矩陣
??也就是說我們已經用過 .M文件了,而且上一次我們存的是數據 mydata。這就要引出我們下面要說的了: M文件的分類
??M文件分為兩類:
- 命令文 件(Script File)
- 函數文件(Function File)
主要區別如下:
(1)命令文件沒有輸入參數,也不返回輸出參數, 而函數文件可以帶輸入參數,也可返回輸出參數。
(2)命令文件對MATLAB工作空間中的變量進行 操作,文件中所有命令的執行結果也完全返回到工作空間中,而函數文件中定義的變量為局部變量, 當函數文件執行完畢時,這些變量被清除。
(3)命令文件可以直接運行,在MATLAB命令窗口輸入命令文件的名字,就會順序執行命令文件中的命令,而函數文件不能直接運行,而要以函數調用的方式來調用它。
PS:如果你理解了他們之間的區別,那么你現在應該清楚的知道我們在上一篇文章中使用的.M文件屬于 命令文件。
下面就來詳細講講函數文件
??函數文件是另一種形式的M文件,每一個函 數文件都定義一個函數。 事實上,MATLAB提供的標準函數大部分 都是由函數文件定義的。基本結構如下:
說明:
??以function開頭的一行為引導行,表示該M 文件是一個函數文件。函數名的命名規則與變量名相同。輸入形參為函數的輸入參數,輸出形參為函 數的輸出參數。當輸出形參多于一個時,則應該用方括號括起來。 函數文件名通常由函數名再加上擴展名.m組成,不過函數文件名與函數名也可以不相同。當兩者不同時,MATLAB將忽略函數名而確認函數文件名,因此,調用時使用函數文件名。
??注釋非常極其重要,不寫注釋的代碼我基本是不愿意看的。標準注釋說明包括如下3部分內容:
- 緊隨函數文件引導行之后以%開頭的第一注釋行。 這一行一般包括大寫的函數文件名和函數功能簡要 描述,供lookfor關鍵詞查詢和help在線幫助用。
- 第一注釋行及之后連續的注釋行。通常包括函數 輸入輸出參數的含義及調用格式說明等信息,構成 全部在線幫助文本
- 與在線幫助文本相隔一空行的注釋行。包括函數 文件編寫和修改的信息,如作者、修改日期、版本 等內容,用于軟件檔案管理。
??MATLAB在函數調用上有一個與一般高級語言不同之處,就是函數所傳遞參數數目的可調性。 在調用函數時,MATLAB用兩個永久變量nargin 和nargout分別記錄調用該函數時的輸入實參和輸出 實參的個數。只要在函數文件中包含這兩個變量, 就可以準確地知道該函數文件被調用時的輸入/輸出 參數個數,從而決定函數如何進行處理。
再提一個小點,如果在函數中想使用全局變量,用global var_name
2、程序控制結構
??程序控制結構對學過C++,學過Java的同學來說肯定是 a piece of cake ,這里簡單的說一下Matlab的程序控制結構。
- 順序結構
- 選擇結構
??switch子句后面的表達式應為一個標量 或一個字符串,case子句后面的結果不僅可以為一個標量或一個字符串,而且還可以為 一個將多個結果用大括號括起來的單元數據 (Cell)。如果case子句后面的結果為一個 單元數據,則表達式的值等于該單元數據中 的某個元素時,執行相應的語句組。
try 語句塊1 catch 語句塊2 end??try語句先試探性執行語句塊1,如果語句塊1在執行 過程中出現錯誤,則將錯誤信息賦給保留的lasterr 變量,并轉去執行語句塊2。
- 循環結構
劃重點
//執行過程是依次將矩陣的各列元素賦給循環變 量,然后執行循環體語句,直至各列元素處理完畢 for 循環變量=矩陣表達式 循環體語句 end while(條件) 循環體語句 End??最后提一下兩個循環的老朋友,break和continue:break語句用于終止循環的執行。當在循環 體內執行到該語句時,程序將跳出循環,繼 續執行循環語句的下一語句。continue語句控制跳過循環體中的某些語 句。當在循環體內執行到該語句時,程序將 跳過循環體中所有剩下的語句,繼續下一次循環。
程序性能分析與優化
??這是程序設計中個非常重要的一步,這就好比漂亮的車子有很多,但是錢不夠一切都是然并卵;而對于程序他需要考慮的是對資源的占用、時間的消耗。一個好的程序能夠在占用最少資源的情況好快速高效的完成規定業務。
??在matlib中,Profiler性能評估器、tic函數和toc函數能分析程序各環節的耗時情況,分析報告能幫助用戶尋 找影響程序運行速度的“瓶頸”所在,以便于進行程序優化。例如,通過函數文件性能評估器(Profiler)用戶可以很 方便地了解程序執行過程中各函數及函數中的每條 語句所耗費的時間,從而有針對性地改進程序,提 高程序的運行效率。
matlab 程序優化常見思路
向量化
??這是一個非常重要的編程思想,因為GPU和CPU都含有并行化指令或者稱之為SIMD(single instruction multiple data)指令。向量化能夠充分利用并行化從而更加快速的計算,這點在GPU和CPU上面都是成立的,GPU更加擅長SIMD計算但是CPU實際上也不差,只是沒有GPU擅長而已。預分配內存空間
??通過在循環之前預分配向量或數組的內存空間可以提高for循環的處理速度。減小運算強度
??采用運算量更小的表達式,一般來說,乘法比乘方運算快,加法比乘法運算快,位運算比求余運算快。
總結
以上是生活随笔為你收集整理的matlab 程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言入门2---R语言基础绘图
- 下一篇: matlab人脸追踪,求大神帮助我这个菜