1.1 MATLAB系統環境
1.MATLAB操作界面的組成
(1)MATLAB主窗口
(2)命令行窗口:命令行窗口用於輸入命令並顯示命令的執行結果。
(3) 當前文件夾窗口
如何設置當前文件夾呢?
(1) 在當前文件夾工具欄或當前文件夾窗口中選擇某文件夾為當前文件夾
(2)使用cd命令
(4)工作區窗口
2.MATLAB的搜索路徑
(1)用path命令設置文件搜索路徑。例如:
>> path(path,'e:\work')
(2)用對話框設置文件搜索路徑。
3,兩個問題
(1) 如果在當前文件夾和搜索路徑文件夾下建立了一個同名的M 文件,那么在命令行窗口輸入文件名時,執行哪個文件?
(2)如果用戶建立的文件既沒有保存在當前文件夾下,也沒有 保存在文件搜索路徑中,那么在命令行窗口輸入文件名時, 會出現什么信息?
第一個問題根據MATLAB的搜索路徑,程序文件的搜索順 序是首先在當前文件夾中搜索,然后再在文件搜索路徑 中的文件夾中搜索,所以執行的是當前文件夾下的M文件。 第二個問題,同樣根據MATLAB的搜索路徑,如果用戶建 立的文件既沒有保存在當前文件夾下,也沒有保存在文 件搜索路徑中,那么MATLAB就找不到這個文件,系統會 給出錯誤提示信息。
1.2 MATLAB數值數據
1.數值數據類型的分類
(1)整型
無符號整數:無符號8位整數、無符號16位整數、無符號32位整數、無符號64位整數。
無符號8位整數數據范圍:00000000~11111111(0~28-1)。
帶符號整數:帶符號8位整數、帶符號16位整數、帶符號32位整數、帶符號64位整數。
帶符號8位整數數據范圍:10000000~01111111(-27~27-1)。
int8():將無符號位整型轉成帶符號位整形。
uint8():將有符號位整型轉成無符號位整形。
(2)浮點型
single函數:將其他類型的數據轉換為單精度型。
double函數:將其他類型的數據轉換為雙精度型。
class函數:輸出數據類型
(3)復型
復型數據包括實部和虛部兩個部分,實部和虛部默認為雙精度型,虛數 單位用i或j來表示。
real函數:求復數的實部。
imag函數:求復數的虛部。
2.數值數據的輸出格式
format命令的格式: format 格式符。
3.常用數學函數
(1)函數的調用格式為:函數名(函數自變量的值)
(2)常用函數的應用
① 三角函數有以弧度為單位的函數和以角度為單位的函數,如果是以 角度為單位的函數就在函數名后面加“d”,以示區別。
② abs函數可以求實數的絕對值、復數的模、字符串的ASCII碼值。
③用於取整的函數有fix、floor、ceil、round。
④函數應用舉例。
(1)分別求一個三位正整數的個位數字、十位數字和百位數字。
(2)求[1,100]區間的所有素數。
1.3 變量及其操作
1.變量與賦值語句
在MATLAB中,變量名是以字母開頭,后接字母、數字或下畫線的字符序列, 最多63個字符。
變量名區分字母的大小寫。
標准函數名以及命令名必須用小寫字母。
2.預定義變量
預定義變量是在MATLAB工作空間中駐留,由系統本身定義的變量。
(1) ans是默認賦值變量
(2) i和j代表虛數單位
(3) pi代表圓周率
(4) NaN代表非數
3.變量的管理
(1)內存變量的刪除與修改
who命令與whos命令
(2)內存變量文件
用於保存MATLAB工作區變量的文件叫做內存變量文件,其擴展名為.mat,也叫MAT文件。
save命令:創建內存變量文件。
load命令:裝入內存變量文件。
1.4 MATLAB矩陣的表示
1.矩陣的建立
(1)利用直接輸入法建立矩陣:將矩陣的元素用中括號括起 來,按矩陣行的順序輸入各元素,同一行的各元素之間用逗 號或空格分隔,不同行的元素之間用分號分隔。
(2)利用已建好的矩陣建立更大的矩陣: 一個大矩陣可以由已經建立好的小矩陣拼接而成。
(3)可以用實部矩陣和虛部矩陣構成復數矩陣
2.冒號表達式
3.結構矩陣和單元矩陣
(1)結構矩陣
由結構數據構成的矩陣就是結構矩陣,結構矩陣里的每個元素 就是結構數據類型。
格式為: 結構矩陣元素.成員名=表達式
(2)單元矩陣
建立單元矩陣和一般矩陣相似,直接輸入就可以了,只是單元矩陣元 素用大括號括起來。
1.5 矩陣元素的引用
1.矩陣元素的引用方式
(1)通過下標來引用矩陣的元素
A(3,2)表示A矩陣第3行第2列的元素。
注意:如果給出的行下標或列下標大於原來矩陣的行數和列數, 那么MATLAB將自動擴展原來的矩陣,並將擴展后沒有賦值的矩陣 元素置為0。
(2)通過序號來引用
在MATLAB中,矩陣元素按列存儲,即首先存儲矩陣的第一列元素,然后存儲第二列元素,…,一直到矩陣的最后一列元素。
矩陣元素的序號就是矩陣元素在內存中的排列順序。
序號與下標是一一對應的,以m×n矩陣A為例,矩陣元素A(i,j)的序 號為(j-1)×m+i
sub2ind函數:將矩陣中指定元素的行、列下標轉換成存儲的序號。調用格式為:
2.利用冒號表達式獲得子矩陣
子矩陣是指由矩陣中的一部分元素構成的矩陣。
A(i,:) 第i行的全部元素
A(:,j)第j列的全部元素
A(i:i+m,k:k+m)第i~i+m行內且在第k~k+m列中的所有元素
A(i:i+m,:) 第i~i+m行的全部元素
end運算符:表示某一維的末尾元素下標。
3.利用空矩陣刪除矩陣的元素
空矩陣是指沒有任何元素的矩陣。
4.改變矩陣的形狀
reshape(A,m,n):在矩陣總元素保持不變的前提下,將矩陣A重 新排成m×n的二維矩陣。
注意:reshape函數只是改變原矩陣的行數和列數,但並不改 變原矩陣元素個數及其存儲順序。
A(:) :將矩陣A的每一列元素堆疊起來,成為一個列向量。
A(:)等價於reshape(A,6,1)。
1.6 MATLAB基本運算
1.算術運算
(1)基本算術運算
基本算術運算符:+(加)、-(減)、*(乘)、/(右除)、\(左除)、^(乘方)。
注意:MATLAB的算術運算是在矩陣意義下進行的。
單個數據的算術運算只是矩陣運算的一種特例。
加減運算
若兩矩陣同型,則運算時兩矩陣的相應元素相加減。
若兩矩陣不同型,則MATLAB將給出錯誤信息。
一個標量也可以和矩陣進行加減運算,這時把標量和矩陣的每一個元素進行加減運算。
乘法運算
矩陣A和B進行乘法運算,要求A的列數與B的行數相等,此時則稱A、B矩陣是可乘的,或稱A和B兩矩陣維數和大小相容。
如果兩者的維數或大小不相容,則將給出錯誤信息,提示用戶兩個矩陣是不可乘的。
除法運算
在MATLAB中,有兩種矩陣除法運算:右除/和左除\。如果A矩陣是非奇異方陣,則B/A等效於B*inv(A),A\B等效於inv(A)*B。
乘方運算
一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標量。
(2)點運算
點運算符:.*、./、.\和.^。
兩矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣同型。
2.關系運算
關系運算符:<(小於)、<=(小於或等於)、>(大於)、>=(大於或等 於)、==(等於)、~=(不等於)。
當兩個比較量是標量時,直接比較兩數的大小。若關系成立,關系 表達式結果為1,否則為0。
當參與比較的量是兩個同型的矩陣時,比較是對兩矩陣相同位置的元素按標量關系運算規則逐個進行,最終的關系運算的結果是一個與原矩陣同型的矩
陣,它的元素由0或1組成。
當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關系運算規則逐個比較,最終的關系運算的結果是一個與原矩陣同
型的矩陣,它的元素由0或1組成。
3.邏輯運算
邏輯運算符:&(與)、|(或)和~(非)。設參與邏輯運算的是兩個標量a和b,那么運算規則為:
a&b a、b全為非零時,運算結果為1,否則為0。
a|b a、b中只要有一個為非零時,運算結果為1。
~a 當a為零時,運算結果為1;當a為非零時,運算結果為0。
若參與邏輯運算的是兩個同型矩陣,那么將對矩陣相同位置上的元素按標量規則逐個進行運算,最終運算結果是一個與原矩陣同型的矩陣,其元素由1或0組成。
若參與邏輯運算的一個是標量,一個是矩陣,那么將在標量與矩陣中的每個元素之間按標量規則逐個進行運算,最終運算結果是一個與矩陣同型的矩陣,其元素由1或0組成。
水仙花數是指各位數字的立方之和等於該數本身的三位正整數。 求全部水仙花數。
1.7 字符串處理
1.字符串的表示
在MATLAB中,字符串是用單引號括起來的字符序列。
若字符串中的字符含有單引號,則該單引號字符要用兩個單引號來表示。
建立多行字符串,形成字符串矩陣。
建立一個字符串向量,然后對該向量做如下處理:
① 取第1~5個字符組成的子字符串。
② 將字符串倒過來重新排列。
③ 將字符串中的小寫字母變成相應的大寫字母,其余字符不變。
④ 統計字符串中小寫字母的個數。
2.字符串的操作
(1) 字符串的執行
格式: eval(s)
(2)字符串與數值之間的轉換
abs和double函數都可以用來獲取字符串矩陣所對應的ASCII碼數值矩陣。
char函數可以把ASCII碼矩陣轉換為字符串矩陣。
(3)字符串的比較
字符串的比較有兩種方法:利用關系運算符或字符串比較函數。
關系運算符比較:兩個字符串里的每個字符依次按ASCII值大小逐 個進行比較,比較的結果是一個數值向量,向量中的元素要么是1 ,要么是0。
字符串比較函數用於判斷字符串是否相等,有4種比較方式,函數如下:
strcmp(s1,s2):用來比較字符串s1和s2是否相等,如果相等,返回結果為1,否則 返回0。
strncmp(s1,s2,n):用來比較兩個字符串前n個字符是否相等,如果相等,返回1, 否則返回0。
strcmpi(s1,s2):在忽略字母大小寫前提下,比較字符串s1和s2是否相等,如果相 等,返回1,否則返回0。
strncmpi(s1,s2,n):在忽略字符串大小寫前提下,比較兩個字符串前n個字符是否 相等,如果相等,返回1,否則返回0。
(4)字符串的查找與替換
findstr(s1,s2):返回短字符串在長字符串中的開始位置。
strrep(s1,s2,s3):將字符串s1中的所有子字符串s2替換為字符 串s3。