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.