matlab---學習手記

                 matlab基本介紹、基本程序元素

1.matlab(matrix labortory)是一個交互系統,基本數據元素是數組

2.matlab有5部分組成:開發環境、數學函數庫、matlab語言(一個高級的矩陣/數組語言)、圖形、matlab應用程序接口(API)

3.單擊“start”按鈕或者 alt+s 可以快速存取工具和其他。

4.命令prefdir可以查看文件的位置

5.在command history窗口中有三種方式運行語句:雙擊被選擇語句;右鍵單擊被選擇語句,選擇“evaluate selection”;選擇語句,按enter鍵。

6.建立快捷鍵---選擇一條或者多條語句,將它們拖到快捷鍵條

7.在命令歷史中查找語句---方法一:將光標定位於某一行,然後寫入要查找的語句的首字母,matlab會自動找出指定首字母的下一條語句。

 方法二:從“edit”菜單中選擇“find”命令,通過find對話框(ctrl+F)查找指定的文本

8.命令pathtool打開“set path”查找路徑對話框

9.函數who列出所有的變量名、函數whos列出所有函數的全面信息

10.在workspace工作區中,雙擊變量可以打開數組編輯器

11.profiler---幫助用戶提高M文件的性能。在profiler中運行matlab語句或M文件,profiler生成一個報告,顯示文件及其所調用的函數運行耗費的時間。(desktop--profiler)

12.抑制輸出到屏幕----在語句的末尾加分號(;)即可

13.程序就是控制語句、註解和表達式的順序排列。而表達式是把變量、常數、函數用各種運算符連接起來。matlab的表達式能夠包含矩陣。

   matlab程序主要元素:變量、特殊值、運算符、函數等

14.變量名----matlab變量名必須以字符開頭,是字母和數字的任意組合,允許使用下劃線。(不能使用函數名和系統保留字;不能使用i和j,這兩個字符是複數專用的;大小寫字符是不同的)

 爲了避免使用不合法的變量名,可以用isvarname函數進行驗證(isvarname + 變量名)

15.變量類型---局部變量:在函數中定義的變量。每個函數都有自己的局部變量,只能被定義它的函數訪問,局部變量不用特別定義,只要給了變量名,matlab會自動建立。

全局變量(global):幾個函數共享的變量。每個使用它的函數都要用global語句聲明它爲全局變量。在函數最前面定義全局變量,全局變量定義先於其他變量定義(全局變量的名字最好全部用大寫   字符)

永久變量(persistent):永久變量類似於java中的static變量。只能在M文件函數中定義和使用,只允許定義它的函數存取。(最好在函數開始處聲明永久變量)

16.clear清除變量---clear all(內存中所有的變量)、global(工作區中的所有永久變量)、functions(內存中所有的函數)

   mlock阻止被清除(鎖住當前正在運行的M文件和MEX文件,以後的clear函數不能從內存中清除它們)

   isempty---測試永久變量/矩陣是否爲空,空則返回邏輯值1,否則返回邏輯值0

17.matlab中爲自己保留的一些字,稱爲關鍵字,主要是在語言中用做語句,程序設計者不能使用關鍵字,如果誤用了關鍵字,系統會發出錯誤信息,可以在命令中用iskeyword函數列出關鍵字。

18.特殊值---一些函數能夠返回重要的特殊值。ans--最近的答案、eps--浮點數相對精度、inf--無窮大(n/0)、NaN--非數值(0/0或者inf/inf)、computer--電腦類型、version--matlab版本

19.matlab運算符---算術運算符、關係運算符、邏輯運算符

     a/b表示a除以b、a\b表示b除以a、(,)表示矩陣轉置、(:)表示用於矩陣和數組的索引,也用於增量操作。

 數組間元素對元素的運算,在矩陣運算符的左邊加點(.)來表示,如.*數組乘        A(2,:)表示矩陣A的第二行  B(:,3)表示矩陣B的第三列

20.==表示等於、~=表示不等於、關係運算是兩個數組元素對元素的比較。因此,兩個運算對象數組要有相同的維數,結果是一個邏輯數組,與操作對象數組有同樣的維數,數組元素是邏輯1(關係是真)和邏輯0(關   系是假)。

21.&--邏輯與(and)兩個數組的對應元素都是1,結果是1,否則是0

   |---邏輯或(or)對應元素只要有一個是1,結果就是1,否則是0

   ~---非(not)單目運算,與元素值相反

   xor---異。對應元素不同,結果是1,相同是0

22.捷徑運算符---&&捷徑and、||捷徑or。    A&&B  若A=0(false),結果肯定是0,不必再看B了。

       A||B  若A=0(true),結果肯定是1, 不必再看B了。

23.any和all----也是在數組上進行邏輯操作,但不是元素對元素的運算。B=any(A,dim)

                                                                 B=all(A,dim) A爲數組。dim指定按列或行操作。1表示按列,2表示按行,默認值是1.

   按列則結果B是一個行向量,按行則結果B是一個列向量。B=any(A,dim),每列或者行只要有一個元素是1,結果就是1.

                     B=all(A,dim),每列或者行所有的元素都是1,結果纔是1.

24.有符號和無符號整數-----有無符號的整數,在計算機內存中是區別不出有無符號的,而是在程序裏有區分。計算機中數據是以補碼形式存放的,用二進制表示。比如:默認無符號型,只要在類型符號加

   unsigned就是無符號型,Int是有符號的。其實說白了就是:定義帶符號整數的,則可以存儲正負整數,定義無符號整數的,則只可以存儲正整數。

25.單精度和雙精度浮點數-------浮點數是屬於有理數中某特定子集的數的數字表示,在計算機中用以近似表示任意某個實數。具體的說,這個實數由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)   的整數次冪得到,這種表示方法類似於基數爲10的科學計數法。一個浮點數a由兩個數m和e來表示:a = m × b^e

   如同字面, 就是表示精度的區別。雙精度浮點數使用8個字節表示,有大約16位十進制有效數字。而單精度浮點數使用4字節,只有7位十進制有效數字。

26.rand產生0-1的均勻隨機數、magic產生魔方矩陣、diag從一個向量中建立對角矩陣、randn創建一個隨機數爲正態分佈的矩陣或數組、randi創建一個由均勻分佈的整數組成的矩陣、randerr生成位誤差形式。

27.函數句柄----函數句柄:是包含了函數的路徑、函數名、類型以及可能存在的重載方法。函數句柄必須通過專門的定義創建的,而一般的圖像的句柄是自動建立的。

   比如定義f(x)=x^2,可以寫爲f=@(x)(x.^2)其中@(x)(x.^2)就是匿名函數,第一個括號裏面是自變量,第二個括號裏面是表達式,@是函數指針f=@(x)(x.^2)表示將匿名函數@(x)(x.^2)賦值給f,於是f就表示該函     數。於是f(2)=2.^2=4;f(1:3)=[1:3].^2=[1 4 9]等等

   函數句柄提供了間接調用函數的方法,使用@或者str2func命令創建。、可用來標示子函數、私有函數和嵌套函數

28.format long/short命令改變文本數字的長度、精確度             上下方向鍵可選取命令框中的已經輸入的命令

   format compact/loose命令調整命令行之間有無空行間隔

   clc清除命令框中所有的命令,clear清除workspace中所有的變量

29.F9重新執行command history中的歷史命令     save+變量名可保存變量名

30.doc命令打開幫助窗口、help打開幫助主體、help+函數可查看詳細的函數用法、F1也可打開

31.matlab中文件類型:m文件、mex文件、fig文件、mdl文件、s文件、mat文件(m是源程序文件   fig是用戶界面窗口定義文件   mat是數據文件保存變量)

32.函數ones(n)產生n維都是1的矩陣、ones(2,3)產生2行3列都是1的矩陣

       zeros(n)產生n維都是0的矩陣、zeros(2,3)產生2行3列都是0的矩陣

       eye(n)生成n維單位矩陣、eye(2,3)生成2乘3的矩陣,此矩陣左面是2維單位矩陣,右面全是0

33.[j:k]---[j,j+1,j+2......k]如[1:5]---[1,2,3,4,5]       [j:d:k]---[j,j+d,......<k]如 [1:2:5]---[1,3,5] 

34.數據存儲是先按列再按行,在一個2維向量A中,A(2)--表示第一列的第二個數,A(3)表示第一行的第二個數、A(2,1)表示第2行第一列的數、A(1,:)表示第一行的所有數、A(:,2)表示第二列的所有   數、A(2:4,2)表示第2列中第2到第4個數、A(1:2:4,3)表示第3列中第1個數和第3個數

35.C=[A,B]表示兩個矩陣的橫向連接、C=[A;B]表示兩個矩陣的縱向連接    size(A)返回矩陣的行數和列數   length(A)表示矩陣行列數中最大的數

   子矩陣----child=A(2,:)所有第2行  child=(2,[2,4])第2行中第2個數和第4個數  child=(2,2:end)第2行中的從第2個數到最後一個數  A(3,2)=3表示把第三行第二列的數改成3

36.logspace函數表示等比數列  logspace(1,3,3)表示10的一次方到10的三次方中間一共3個數,第二個3表示數的個數,返回10的一次方,10的二次方,10的三次方

   linspace函數表示等差數列  linspace(1,5,3)表示1和5之間有3個數,返回1,3,5

37.reshape重塑矩陣或者數組的形狀---reshape(ans,3,3)表示把上一步的結果轉換成3行3列的矩陣(先排列再排行)

38.date--返回現在的日期    clock---返回現在的時間   year(now)返回2017,現在的年份   month(now)返回現在的月份

39.power(5,2)表示5的平方    inv(A)矩陣的逆矩陣   abs(-6)絕對值,返回6    sqrt(2)表示根號2     complex(2,1)返回2+i

   sign(-8)---返回值-1 (複數返回值都是-1)  sign(8)---返回值1(正數返回值都是1)  ceil(3.5)向正無窮方向取整數,返回值4   floor(3.5)向負無窮方向取整數,返回值3

   fix(-3.5)朝0方向取整數,返回值-3        fix(3.5)朝0方向取整數,返回值3    round(3.6)四捨五入,返回值4 

40.取餘數----rem(x,y)與mod(x,y)的區別:  當x,y同號時,rem與mod結果相同;  當x,y異號時,rem(x,y)與x同號,mod(x,y)與y同號。rem(5,3)返回值2

41.conv(u,v)表示兩個多項式相乘   max(A)按列找出每列的最大值    max( max(A)) 表示矩陣中的最大值    mean(A) 每列的平均數   median(A)每列的中位數

   sum(A)每列求和   sum(A,2)每行求和   prod(A)每列求積   prod(A,2)每行求積   sum(sum(A)) 矩陣的總和   prod(prod(A))矩陣的總乘積

42.real(1+2i)表示實部,返回值1    imag(1+2i)表示虛部,返回值2     abs(1+2i)取模,返回值根號下1的平方加2的平方    angle(1+2i)取角度

   (1+2i)右上角加(,)表示共軛,返回1-2i  共軛或者用conj(1+2i)返回1-2i

43.向量點乘和叉乘----dot(A,B)兩個矩陣中的數分別相乘的和、cross(A,B)返回值還是一個向量

   inv(A)矩陣的逆矩陣,A的-1次方,(存在一個矩陣B,使得AB=BA=E,則A和B和逆矩陣)   det(A)---表示|A|,轉換成行列式   |ab||cd|=ad-bc

   rank(A)求秩    eig(A)求特徵值    trace(A)求跡---該方陣對角線上元素的和  

 44.ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,並   等同於國際標準ISO/IEC 646。大小規則

  1)數字0~9比字母要小。如"7"<"F";

  2)數字0比數字9要小,並按0到9順序遞增。如"3"<"8"

  3)字母A比字母Z要小,並按A到Z順序遞增。如"A"<"Z"

  4)同個字母的大寫字母比小寫字母要小。如"A"<"a"。

  記住幾個常見字母的ASCII碼大小:

  “換行LF”爲0x0A;“回車CR”爲0x0D;空格爲0x20;"0"爲0x30; "A"爲0x41;"a"爲0x61。

45.字符串和數組之間的轉換-----abs(‘A’)返回65(A爲字符串,65爲ASCII碼)  char(65)返回A(A爲字符串,65爲ASCII碼) num2str(65)返回65(把數字65轉換爲字符65)

   str2num(‘65’)返回65(把字符65轉換爲數字65)  當想返回(’)時必須同時輸入兩個才能返回一個      'A'+32返回97,A的ASCII碼是65,  lower(’A‘)返回a   upper(‘a’)返回A

46.字符串比較---strcmp(str1,str2)如相同返回1,不相同返回0    strncmp(str1,str2,4)前四個字符相同返回1,不相同返回0   findstr(str1,‘a’)查找字符串中a字符所在的位置

47.字符串連接---strcat(str1,str2)橫向連接(會先將每個字符串尾部的空格去掉再連接)       []會原封不動的將字符數組連接起來  strvcat(str1,str2)縱向連接

48.在matlab中能夠使用許多不同類型的數據。可以用這些數據類型建立矩陣和數組,比如,建立浮點數和整數數組、字符和字串數組、邏輯真和邏輯假數組,每種類型的數據都以矩陣或數組的形式存在,

49.數據類型---class返回對象的數據類型、int整數數組、single單精度整數數組、double雙精度整數數組、logical邏輯值數組、char字符數組、structure結構數組、function handle函數句柄、java class從一個    java類構造的對象

   檢查數據類型---isnan是否爲非數值、isnumeric是否爲數字型、isinf是否無窮大、isfinite是否是有限數、isreal是否實部、isa(x,integer)是否是整數、isa(x,single)是否單精度型

50.字串是指一個unicode字符數組。matlab在內部用對應的數字值表示每一個字符。字串其實是一個向量,它的每個元素是字符的數字代碼。

   Unicode(統一碼、萬國碼、單一碼)是計算機科學領域裏的一項業界標準,包括字符集、編碼方案等。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每個字符設定了統一併且唯一的    二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。8位的ASCII碼是unicode的子集

   長度不同的字符串組成的數組,稱爲字符串單元數組。用單引號定義一維字符數組、[]創建二維字符數組(此時必須保證每行有相同的長度,可在短的字符串後加空格)、char函數創建二維字符數組時會自動加空   格。c=cellstr(s)將字符數組s的每一行變成字符串單元數組c的一個單獨單元,並去掉尾部空格。如:week=[‘sunday   ’;‘monday  ’]---a=cellstr(week)---返回a=‘sunday’

                                                                                                                                                              ‘monday’

51.建立二維字符數組,一定要保證每一行都有相同的長度。如a=['chfnf';'ahfsfa']返回a = chfnf

                                                                                   ahfsfa   當從不同的長度的字串建立字符數組時,可以人爲的在較短的字串後添加空格。

   用char函數則可以自動的添加空格,如b=char('chfnf','ahfsfa')返回同樣的結果

    當想從字符數組中抽出一個字串時,使用deblank函數,因爲它能去掉尾部的空格。如c=deblank(a(1,:))只返回第一行chfnf

    函數cellstr能將字符數組轉換成字符單元數組       isletter判斷字符串中是否爲字母,是爲1不是爲0     isspace判斷是否爲ASCII空線間隔(包括空格、換行、回車、製表、換頁等字符)

    函數strrep進行字符替換,如a=strrep(str1,‘good’,‘great’)把字符str1中的good換成great

52.datenum將輸入轉換爲序列日期數、datestr將輸入轉換爲日期字串、datevec將輸入轉換爲日期向量

   addtodate給日期的某個字段加量,以修改日期數,    size函數可以用來得到結構數組的大小,或者任何結構字段的大小。  rmfield函數可以從結構中刪除字段   一旦建立了結構,就可以用struct函數,或者   用直接賦值語句,在已有的結構字段中建立嵌套結構。

53.有關結構的函數----deal將輸入直接分配給輸出、isfield測試是否是結構數組的字段、rmfield刪除結構的字段、struct2cell將結構數組轉換爲單元數組、fieldnames得到結構的字段名、isstruct測試是否是結   構、struct建立結構數組或者轉換成結構數組      單元數組這是matlab中又一個特殊的數組,它爲一個數組中存儲不同類型的數據提供了機制,所謂單元數組,是在一個數組中包含多個單元(cell),每個單元   作爲一個獨立的存儲單位存儲數據。單元中的數據,可以是數組、字串、向量、標量。    cell函數建立單元數組

54.celldisp顯示單元數組的內容    cellplot顯示單元數組的圖形描述,    iscell檢測數組是否爲單元數組

55.基本工作空間指 使用matlab軟件運行命令行或者腳本文件(不含function關鍵字,由一些列代碼組成的)中的代碼。創建的變量值或者類值及其其他相關信息。當運行命令行或者腳本文件代碼時,workspace中的    stack名爲base,意爲基本工作空間。

   函數工作空間指 使用matlab軟件運行函數文件(含有function關鍵件的M文件)時,創建的函數中的變量值或者類值及其其他相關信息。當運行函數文件時,當前工作空間名爲該文件中此時執行的函數的函數名,    假如你的M文件名爲Myfunction,即主函數名爲Myfunction,此時主函數下還有一個子函數名爲subfunction。單步調試Myfunction文件,起初workspace中的stack名爲Myfunction,即當前工作空間爲函數Myfunction    的工作空間,Myfunction運行過程中進入子函數subfunction時stack名爲subfunction,此時的工作空間爲 兩個即Myfunction,和subfunction函數工作空間,而當前工作空間爲函數subfunction的工作空間,        subfunction函數執行完畢,其工作空間消亡,stack再次顯示爲Myfunction,當前工作空間再次爲Myfunction。工作空間名爲函數名,意爲函數工作空間

   工作空間可以理解爲內存中變量的可視化。

   當前工作空間是一個泛指,可以理解爲當前正在執行的命令行,腳本文件,或者函數的工作空間,包括函數工作空間,基本工作空間。

   工作空間是一種保護機制,一種規則,防止因爲外圍變量訪問當前運行的文件中的信息,而導致變量重名衝突等等問題。

   函數不使用基本工作空間,每個函數都有子集的函數空間。不能在基本工作空間中指派變量到函數空間

56.tic和toc用來記錄matlab命令執行的時間.tic用來保存當前時間,而後使用toc來記錄程序完成時間.兩者往往結合使用,用法如下:

   tic

   operations

   toc

   顯示時間單位:秒

   addtodate函數修改日期數、calendar返回指定年月的日曆表、datetick用日期作爲座標軸的標註、eomday返回指定年月的最後一天、daysdif返回兩個日期之間的天數、etime返回兩個日期向量之間流逝的秒數、   tic和toc返回兩函數之間流逝的時間

57.布爾變量 ----是有兩種邏輯狀態的變量,它包含兩個值:真和假。如果在表達式中使用了布爾型變量,那麼將根據變量值的真假而賦予整型值1或0。要把一個整型變量轉換成布爾型變量,如果整型值爲0,則其布   爾型值爲假;反之如果整型值爲非0,則其布爾型值爲真。布爾型變量在運行時通常用做標誌

58..MEX類型文件---是一種可在matlab環境中調用的C(或fortran)語言衍生程序,MEX文件的後綴名按32位/64位分別爲 .mexw32/.mexw64。MEX文件是由C或Fortran語言編寫的源代碼,經matlab編譯器處理而生成的    二進制文件。它是可以被matlab解釋器自動裝載並執行的動態鏈接程序,類似windows下的dll文件。

    MEX文件實現了一種其它語言與MATLAB的接口,通過MEX文件可以在MATLAB中像調用內嵌函數一樣調用使用C語言和Fortran等語言編寫的函數,實現了代碼重用,同時也能提高MATLAB環境中數據處理的效率

59.namelengthmax返回最大的標識符長度、assignin指派變量到基本工作空間或當前空間

60.eps浮點數相對精度、intmax本計算機能表示的最大整數(intmin)、realmax本計算機能表示的最大浮點數(realmin)、int(帶符號整數)、uint(不帶符號整數)

   eps爲matlab進行數學運算時,計算結果所容許的誤差。因爲浮點數的計算存在容許誤差,因此,在比較浮點數的值是否相等,或查找數組中的某個浮點值時,要考慮這個容許誤差。例如,查找數組a中是否存在1.01這個元素,不要採用find(a==1.01)而應該考慮容許誤差find(abs(a-1.01)<=eps)

61.捷徑運算符只能對標量值執行邏輯與和邏輯或運算,而元素運算(&、|、~、xor)則可以對向量進行邏輯運算

62.[]生成向量和矩陣、{}給元素數組賦值或創建一個空單元數組、()在算術運算中優先計算,封裝函數參數,封裝向量或者矩陣的下標、(...)續行符、@函數句柄,類似於C語言中的取址運算符&。

63.class(創建對象或返回對象類型)、setdiff(返回第一個向量中存在而第二個向量中不存在的元素)、setxor(返回兩個向量中單獨存在的元素)、nnz(返回矩陣中非零元素的個數)

64.要得到換行符,可使用char(10)採用char函數獲得、sprintf(‘\n’)採用sprintf函數

65.字符串操作函數---cellstr生成字符串單元數組、blacks創建含n個空格符的字符串、deblack去掉字符串或單元數組所包含的字符串尾部空格、sprintf字符串格式化命令,主要功能就是把格式化的數據寫入某個   字符串中、eval執行由matlab表達式組成的字符串、feval只執行函數、(eval和feval只在當前工作空間執行表達式語句,假定當前空間是函數空間:如要在基本工作空間執行matlab語句,使用evalin函數)sort      按值的大小對數組元素排序、findstr在長字符中搜索短字符串、strfind(strfind(str1,str2))在str1中搜索str2、

   isstrprop(‘str’,‘category’)數組元素爲category類型,返回真,否則假、  ---alpha字母型、digit數字型、cntrl控制字符、print圖形字符

66.格式字符串----%-10.5x 其中 %表示初始化字符%  -表示標誌位(還有+和0這兩種標誌位  +表示右靠齊、 -表示左靠齊  0表示前導零) 10表示域寬(指數字字符串打印的最少位數) 5表示精度(指數字字符串     小數點後保留的位數) x表示轉換字符

   轉換字符:%c單個字符   %d十進制記數  %s字符串    %o無符號八進制記數    %f浮點記數   %u無符號十進制記數   %x十六進制,使用小寫   %X十六進制,使用大寫

   轉義字符:\b退格符   \f換頁符    \n換行符    \r回車符    \t跳格符   \\反斜線   ''單引號    %%百分號

67. str2num與str2double都可以將字符串轉換爲數值,但是str2num爲矩陣運算,可以生成數值矩陣,而str2double爲標量運算,只能生成一個數值。因此當需要生成一個數值時,兩者都能用,但是str2double的運    行速度快

68.dec十進制、bin二進制、hex十六進制、base爲base進制、oct八進制

69.結構數組:創建結構數組有兩種方法。方法一:使用點號(.)運算符,

如:results.name='dafei'

    results.rank=2

    results.score=[55 66 41]

                  輸入results返回   name:'dafei'

                                   rank=2

                                   score=[55 66 41]

  將results擴展爲1×2的結構數組:results(2).name='liucheng'

                                 results(2).rank=1

                                 results(2).score=[55 68 71]

 輸入results返回                   name

                                  rank

                                  score 

   對於多維結構數組,matlab不會顯示單個字段的內容,而只顯示結構數組包含的各類信息概略,---results(2)%可查看結構數據的第二個元素的各個字段的內容

   方法二:s=struct(‘field1’,{},field2,{}.....)或者s=struct(‘field1’,value1,field2,value2.....)   struct([])創建0×0的無字段結構數組、struct()創建1×1的無字段結構數組

70.HTML=HTM---是指超文本標記語言,標準通用標記語言下的一個應用。“超文本”就是指頁面內可以包含圖片、鏈接,甚至音樂、程序等非文字元素。超文本標記語言的結構包括“頭”部分(英語:Head)、和“   主體”部分(英語:Body),其中“頭”部提供關於網頁的信息,“主體”部分提供網頁的具體內容。

71.單元數組--是一種特殊數組,它爲一個數組中存儲不同類型的數據提供了機制。創建方法有兩種。方法一使用大括號{}。方法二使用cell函數  如果想查看單元數組的全部內容,使用celldisp函數、用cellplot顯   示單元數組的圖形描述

72.cat按指定的方向連接矩陣、horzcat橫向連接矩陣、vercat縱向連接矩陣、repmat通過複製和拼接創建新矩陣

   [a;b]等價於cat(1,a,b)與vercat(a,b)  矩陣大小與形狀的函數:length返回矩陣最長維的長度、size返回矩陣的每一維長度、numel返回矩陣的元素數、ndims返回矩陣的維數

    rot90翻轉矩陣90度、fliplr沿縱軸左右翻轉、flipud沿橫軸上下翻轉、flipdim按指定方向翻轉、transpose沿主對角線翻轉、ctranspose共軛轉置。

73.sort對數組行或列進行升序或降序排列、sortrows按列值的升序或降序排列行  [B,index]=sort(A,dim,mode)  dim分1(默認)或者2    mode分ascend(默認)或者descend

                                                                         [B,index]=sortrows(A,column)

74.intersect返回兩個數集的交集、setdiff找出在第一個向量中,不在第2個向量內的元素、setxor找出不在數集交集中的所有元素、union返回兩個數集的並集、unique去掉向量中重複的元素

75.M文件有兩種類型:腳本和函數。腳本是包含一系列matlab語句的簡單文件。它不接受輸入參數,輸出結果顯示在命令窗口,變量保存在基本工作空間。而函數使用自己的局部變量,臨時建立自己的函數空間,接   受輸入參數,也能返回輸出參數。

   function定義M文件函數、nargin返回函數輸入參數個數、nargout返回函數輸出參數個數,nargchk驗證輸入參數個數、nargoutchk驗證輸出參數個數、varargin接收函數的輸入參數到單元數組、vararout返回函   數輸出參數到單元數組、mfilename返回當前所執行M文件的文件名

76.程序中總會有對某些量的迭代計算,或對某個過程的重複處理,這就需要使用循環來簡化程序。有兩種循環:循環次數確定的for循環和依條件結束的while循環。調用格式:

   for index=start:step:end

       statements

   end                         增量step的默認值爲1

或者for k=A

        statements

    end                 假設A爲m×n數組,則循環次數爲n次,即數組按列循環。執行時,依次按列賦值給k, 即for k=A(:,i),i爲循環次數,值從1到n。順序從列向量中取元素,每取一個,執行一次循環。

 

   while語句     while expression

                       statements

                 end       由邏輯expression爲真,執行statements語句,否則退出循環。

 

   if語句  if expression1

              statements1

           elseif expression2

              statements2

           end

   switch語句   switch expression

                        case1 val1

                            statements1

                        case2 val2

                            statements2

                        otherwise

                            statements3

                 end

try...catch結構---錯誤檢查語句。當程序運行在複雜的環境下時,一些語句可能會產生錯誤,導致程序停止執行,這時我們需要將這些語句放在try..catch結構中。

             try

                程序段A

             catch

                程序段B

             end             逐行運行程序段A,一旦運行出錯,就跳過程序段A後面的語句,改爲執行程序段B,此時命令行並不提示出錯信息,若程序段運行沒有出現錯誤,就跳過程序段B,繼續執行後面的程序

 continue:用於循環控制。當不想執行循環體的全部語句,只想在做完某一步後直接返回到循環頭時,在此處插入continue,continue後面的語句將被跳過

  break:用在for或while循環中,立即結束本層循環,而繼續執行循環之後的下一條語句,嵌套語句中,它只跳出所在層的循環。

  return:終止當前命令的繼續執行,控制權交給調用函數或鍵盤

77.pause暫停程序的執行、pack內存整理、dir列出當前目錄所有文件夾和文件、echo回顯執行中的M文件、diary命令行的操作記錄、ls列當前目錄所有文件夾和文件名、cd更改或顯示當前工作路徑、pwd顯示當前工作路徑、display顯示字符串、數組、變量名

78.習慣上,m、n、k表示int類型的臨時變量,c、ch表示字符類型的臨時變量,a表示臨時數組,x、y或z表示雙精度臨時變量、前綴m和n用於申明數值對象、m代表matrix、n代表number,如mRows、nfiles,前綴p表示指針,前綴st表示枚舉、結構或者聯合體,前綴b表示布爾型變量

79.line、row都可以翻譯成行或列,column翻譯成列,line和row一起用時row表示行,line表示列

80.Tab鍵右移整段代碼、shift+Tab組合鍵左移整段代碼、Tab鍵自動補全函數名、Tab自動補全函數調用格式、採用代碼分段符%%對代碼進行分段高亮顯示、shift+F1(或右鍵選擇Function Browser)組合鍵,打開函數瀏覽器、Ctrl+I(右鍵選擇smart indent)組合鍵執行代碼格式自動縮排、ctrl+D組合鍵或右鍵選擇open selection打開該函數的源代碼、ctrl+R組合鍵註釋整段代碼,ctrl+T組合鍵取消註釋整段代碼、%{....%}結構註釋整段代碼(%{和%}都必須只佔一行處理)

81.矩陣的運行效率遠遠高於循環運算。

82.句柄是matlab語言獨有的參數,相當於C語言的指針。句柄分爲多種,如函數柄,對象柄,圖形柄等。圖形句柄就指一個圖形,在生成圖形時同時得到一代號,如語句 h=plot(x,y),h 就是一個圖形句柄,在後來的某一個地方就可用h代表這個圖,如set(h,....),對這個圖形進行再設置。

在matlab中,每一個對象都有一個數字來標識,此標識成爲句柄,當每次創建一個對象時,matlab就爲他創建一個唯一的句柄。句柄的作用不言而喻。句柄中包含有該對象的相關信息參數,可以在後續程序中進行操作,改變其中的參數,以便達到不同的效果。

 它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,從數據類型上來看它只是一個16位的無符號整數。句柄實際上是一種指向某種資源的指針,但與指針又有所不同。“句柄”(handle),handle的本意是把柄,把手的意思。相當於C語言中的函數指針(入口地址),只不過句柄就用一個唯一的常整數來指出。

 句柄與指針的區別在於:指針對應着一個數據在內存中的地址,得到了指針就可以自由地修改該數據。而句柄不行,它是對象生成時系統指定的,是爲了區別系統中存在的各個對象,這個句柄不是由程序員符給的。例如:

h=figure(1);   % 創建1號窗口,返回句柄     返回值,h=1

給新建的窗口創建的句柄號爲1,通過該句柄號,就可可以得到該圖形的屬性。

get(h), get函數中輸入句柄號,可以返回句柄值h所指定的圖形對象的所有屬性名稱與相對應的屬性值

get(hObject,'String'), 取出hObject句柄所指對象中的 'String'值

83. x軸上下限設定xlim([a,b]);y軸上下限設定ylim([a,b])

使用方法如下,xlim([XMIN XMAX])    % sets the x limits
84.

 

 

           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章