MATLAB学习笔记(二)——数据及其运算
MATLAB數據及其運算筆記
- 2.1 MATLAB數值數據
- 2.1.1 數值數據類型的分類
- 1.整型
- 2.浮點型
- 3.復型
- 2.1.2 數據的輸出格式
- 2.2 MATLAB矩陣的表示
- 2.2.1 矩陣的建立
- 2.2.2 冒號表達式
- 2.2.3 矩陣的引用
- 1.矩陣元素的引用方式MATLAB通過下標引用矩陣的元素
- 2.利用冒號表達式獲得子矩陣
- 3.利用空矩陣刪除矩陣的元素
- 4.改變矩陣的形狀
- 2.3 變量及其操作
- 2.3.1 變量與賦值語句
- 1.變量命名
- 2.賦值語句
- 2.3.2預定義變量
- 2.3.3 變量的管理
- 1.內存變量的刪除與修改
- 2.4 MATLAB常用內部函數
- 2.4.1 常用數學函數
- 2.4.2 矩陣的超越函數
- 1.矩陣平方根
- 2.矩陣對數
- 3.矩陣指數
- 4.普通矩陣函數
- 2.5 MATLAB運算
- 2.5.1 算術運算
- 1.基本算術運算
- 2.點運算
- 2.5.2 關系運算
- 2.5.3 邏輯運算
- 2.6 字符串
- 2.6.1 字符串的表示
- 2.6.2 字符串的操作
- 2.7 結構數據和單元數據
- 2.7.1 結構數據
- 2.7.2 單元數據
聲明:
筆記是學習慕課網《科學計算與MATLAB語言》課程和劉衛國主編的《MATLAB程序設計與應用(第3版)》后的個人總結,方便自己以后鞏固和復習!
2.1 MATLAB數值數據
2.1.1 數值數據類型的分類
1.整型
整型數據是不帶小數的數,分為有帶符號整數和無符號整數。
2.浮點型
浮點型數據有單精度(single)和雙精度(double)之分,單精度型實數在內存中占用4個字節,雙精度型實數在內存中占用8個字節,雙精度型的數據精度更高。
在Matlab中,數據默認為雙精度型。
single函數 可以將其他類型的數據轉換為單精度型;利用class可以得到參數的數據類型。
double函數 可以將其他類型的數據轉換為雙精度型。
3.復型
復型數據包括實部和虛部兩個部分,實部和虛部默認為雙精度型。
在MATLAB中,虛數單位用i或j表示。
例如,6+5i與6+5j表示的是同一個復數,也可以寫成6+5i或6+5j,這里將i或j看作一個運算量參與表達式的運算。
2.1.2 數據的輸出格式
MATLAB用十進制數表示一個常數,具體可采用日常記數法和科學記數法兩種表示方法。
format命令的格式為:
format 格式符其中,格式符決定數據的輸出格式,各種格式符及其含義如表所示。
| short | 輸出小數點后4位,最多不超過7位有效數字。對于大于1000的實數,用5位有效數字的科學記數形式輸出 |
| long | 15位有效數字形式輸出 |
| short e | 5位有效數字的科學記數形式輸出 |
| long e | 15位有效數字的科學記數形式輸出 |
| short g | 從short和short e中自動選擇最佳輸出方式 |
| long g | 從long和long e中自動選擇最佳輸出方式 |
| rat | 近似有理數表示 |
| hex | 十六進制表示 |
| + | 正數、負數、零分別用+、-、空格表示 |
| bank | 銀行格式,用元、角、分表示 |
| compact | 輸出變量之間沒有空行 |
| loose | 輸出變量之間有空行 |
注意:format命令只影響數據輸出格式,而不影響數據的計算和存儲。
2.2 MATLAB矩陣的表示
2.2.1 矩陣的建立
1.直接輸入法:
最簡單的建立矩陣的方法是從鍵盤直接輸入矩陣的元素。
具體方法如下:將矩陣的元素用方括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。
2.2.2 冒號表達式
冒號表達式可以產生一個行向量,
一般格式是:
e1:e2:e3其中e1為初始值,e2為步長,e3為終止值。
初始值:4 步長:3 終止值:12。
在MATLAB中,還可以用linspace函數產生行向量。
其調用格式為:
linspace(a,b,n)其中a和b是生成向量的第一個和最后一個元素,n是元素總數。
顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價
2.2.3 矩陣的引用
1.矩陣元素的引用方式MATLAB通過下標引用矩陣的元素
例如:A(3,2)=200
也可以采用矩陣元素的序號來引用矩陣元素。矩陣元素的序號就是相應元素在內存中的排列順序。
在MATLAB中,矩陣元素按列存儲,先第一列,再第二列,依次類推。
顯然,序號(Index)與下標(Subscript )是一一對應的,以m×n矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。其相互轉換關系也可利用sub2ind和ind2sub函數求得。
2.利用冒號表達式獲得子矩陣
① A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。
② A(i:i+m,:)表示取A矩陣第i~i+m行的全部元素;A(:,k:k+m)表示取A矩陣第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內,并在第k~k+m列中的所有元素。 ③A(:)將矩陣A每一列元素堆疊起來,成為一個列向量,而這也是MATLAB變量的內部儲存方式。
3.利用空矩陣刪除矩陣的元素
在MATLAB中,定義[]為空矩陣。給變量X賦空矩陣的語句為
X=[]注意,X=[]與clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在于工作空間中,只是維數為0。
4.改變矩陣的形狀
reshape(A,m,n)函數在矩陣總元素保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。
例如:
x=[23,45,65,34,65,34,98,45,78,65,43,76 y=reshape(x,3,4 y =23 34 98 6545 65 45 4365 34 78 76注意:
reshape函數只是改變原矩陣的行數和列數,即改變其邏輯結構,但并不改變原矩陣元素個數及其存儲順序。
A(:)將矩陣A的每一列元素堆疊起來,成為一個列向量,從而改變了矩陣的形狀。
2.3 變量及其操作
2.3.1 變量與賦值語句
1.變量命名
在MATLAB 7.0中,**變量名是以字母開頭,后接字母、數字或下劃線的字符序列,最多63個字符。**在MATLAB中,變量名區分字母的大小寫。
2.賦值語句
(1) 變量=表達式
(2) 表達式
其中表達式是用運算符將有關運算量連接起來的式子,其結果是一個矩陣。
例如:計算表達式的值,并顯示計算結果
在MATLAB命令窗口輸入命令:
>> x=sqrt(7)-2i; y=exp(pi/2); z=(5+cos(47*pi/180))/(1+abs(x-y))2.3.2預定義變量
在MATLAB工作空間中,還駐留幾個由系統本身定義的變量。例如,用pi表示圓周率π的近似值,用i,j表示虛數單位。
預定義變量有特定的含義,在使用時,應盡量避免對這些變量重新賦值。
2.3.3 變量的管理
1.內存變量的刪除與修改
MATLAB工作區窗口專門用于內存變量的管理。在工作區窗口中可以顯示所有內存變量的屬性。
who和whos這兩個命令用于顯示在MATLAB工作空間中已經駐留的變量名清單。
who命令只顯示出駐留變量的名稱;
whos在給出變量名的同時,還給出它們的大小、所占字節數及數據類型等信息。
clear命令用于刪除MATLAB工作空間中的變量。
2.內存變量文件利用MAT文件可以把當前MATLAB工作空間中的一些有用變量長久地保留下來,擴展名是.mat。MAT文件的生成和裝入由save和load命令來完成。常用格式為:
save 文件名 [變量名表] [-append] [-ascii]load 文件名 [變量名表] [-ascii]其中,文件名可以帶路徑,但不需帶擴展名.mat,命令隱含一定對.mat文件進行操作。變量名表中的變量個數不限,只要內存或文件中存在即可,變量名之間以空格分隔。當變量名表省略時,保存或裝入全部變量。-ascii選項使文件以ASCII格式處理,省略該選項時文件將以二進制格式處理。save命令中的-append選項控制將變量追加到MAT文件中。
2.4 MATLAB常用內部函數
2.4.1 常用數學函數
MATLAB提供了許多數學函數,函數的自變量規定為矩陣變量,運算法則是將函數逐項作用于矩陣的元素上,因而運算的結果是一個與自變量同維數的矩陣。
2.4.2 矩陣的超越函數
MATLAB還提供了一些直接作用于矩陣的超越函數,這些函數名都在上述內部函數名之后綴以m,并規定輸入參數A必須是方陣。
1.矩陣平方根
sqrtm(A)計算矩陣A的平方根。
2.矩陣對數
logm(A)計算矩陣A的自然對數。此函數輸入參數的條件與輸出結果間的關系和函數sqrtm(A)完全一樣。
3.矩陣指數
expm(A)的功能都是求矩陣指數eA。例如,對上面計算所得到的A的自然對數b.
4.普通矩陣函數
funm(A,@fun)對方陣A計算由fun定義的函數的矩陣函數值。例如,當fun取exp時,funm(A,@exp)可以計算矩陣A的指數,與expm(A)的計算結果一樣。
2.5 MATLAB運算
2.5.1 算術運算
1.基本算術運算
MATLAB的基本算術運算有:+(加)、-(減)、*(乘)、/(右除)、(左除)、^(乘方)。
注意,運算是在矩陣意義下進行的,單個數據的算術運算只是一種特例。
(1) 矩陣加減運算
假定有兩個矩陣A和B,則可以由A+B和A-B實現矩陣的加減運算。運算規則是:若A和B矩陣的維數相同,則可以執行矩陣的加減運算,A和B矩陣的相應元素相加減。如果A與B的維數不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數不匹配。
(2) 矩陣乘法
假定有兩個矩陣A和B,若A為m×n矩陣,B為n×p矩陣,則C=A*B為m×p矩陣。
(3) 矩陣除法
在MATLAB中,有兩種矩陣除法運算:\和/,分別表示左除和右除。
如果A矩陣是非奇異方陣,則A\B和B/A運算可以實現。
A\B等效于A的逆左乘B矩陣,也就是inv(A) *B,
而B/A等效于A矩陣的逆右乘B矩陣,也就是B*inv(A)。
(4) 矩陣的乘方
一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標量。
A^2 = A*A2.點運算
在MATLAB中,有一種特殊的運算,因為其運算符是在有關算術運算符前面加點,所以叫點運算。點運算符有.*、./、.\和.^。兩矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣的維參數相同。
2.5.2 關系運算
MATLAB提供了6種關系運算符:
< (小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。
它們的含義不難理解,但要注意其書寫方法與數學中的不等式符號不盡相同。
關系運算符的運算法則為:
(1) 當兩個比較量是標量時,直接比較兩數的大小。若關系成立,關系表達式結果為1,否則為0。
(2) 當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關系運算規則逐個進行,并給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。
(3) 當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關系運算規則逐個比較,并給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。
例如:
建立5階方陣A,判斷A的元素是否能被3整除
其中,rem(A,3)是矩陣A的每個元素除以3的余數矩陣。此時,0被擴展為與A同維數的零矩陣,P是進行等于(==)比較的結果矩陣。
2.5.3 邏輯運算
MATLAB提供了3種邏輯運算符:&(與)、|(或)和~(非)。
邏輯運算的運算法則為:
(1) 在邏輯運算中,確認非零元素為真,用1表示,零元素為假,用0表示。
(2) 設參與邏輯運算的是兩個標量a和b,
那么,a&b a,b全為非零時,運算結果為1,否則為0。
a|b a,b中只要有一個非零,運算結果為1。
~a 當a是零時,運算結果為1;當a非零時,運算結果為0。
(3) 若參與邏輯運算的是兩個同維矩陣,那么運算將對矩陣相同位置上的元素按標量規則逐個進行。最終運算結果是一個與原矩陣同維的矩陣,其元素由1或0組成。
(4) 若參與邏輯運算的一個是標量,一個是矩陣,那么運算將在標量與矩陣中的每個元素之間按標量規則逐個進行。最終運算結果是一個與矩陣同維的矩陣,其元素由1或0組成。
(5) 邏輯非是單目運算符,也服從矩陣運算規則。
(6) 在算術、關系、邏輯運算中,算術運算優先級最高,邏輯運算優先級最低。
2.6 字符串
2.6.1 字符串的表示
在MATLAB中,字符串是用單引號括起來的字符序列。例如:
xm='Central South University'例:建立一個字符串向量,然后對該向量做如下處理:
(1) 取第1~5個字符組成的子字符串。
(2) 將字符串倒過來重新排列。
(3) 將字符串中的小寫字母變成相應的大寫字母,其余字符不變。
(4) 統計字符串中小寫字母的個數。
ch='ABc123d4e56Fg9'; subch=ch(1:5) %取子字符串 revch=ch(end:-1:1) %將字符串倒排 k=find(ch>='a'&ch<='z'); %找小寫字母的位置 ch(k)=ch(k)-('a'-'A'); %將小寫字母變成相應的大寫字母 char(ch) length(k) %統計小寫字母的個數注意是英文下的單撇號;‘ABc123d4e56Fg9’,不是‘ABc123d4e56Fg9’
2.6.2 字符串的操作
1.字符串的執行
與字符串有關的一個重要函數是eval,它的作用是把字符串的內容作為對應的MATLAB命令來執行,其調用格式為:
eval(s)
其中s為字符串。例如:
2.字符串與數值之間的轉換
字符串是以ASCII碼形式存儲的,abs和double函數都可以用來獲取字符串矩陣所對應的ASCII碼數值矩陣。
3.字符串的連接
在MATLAB中,要將兩個字符串連接在一起,有兩種常見方法:一是用字符串向量,二是用strcat函數。
4.字符串的比較
字符串的比較有兩種方法:利用關系運算符或字符串比較函數。
當兩個字符串擁有相同的長度時,可以利用關系運算符對字符串進行比較,比較的規則是按ASCII值大小逐個字符進行比較,比較的結果是一個數值向量,其元素為對應字符比較的結果。例如:
字符串比較函數用于判斷字符串是否相等,有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。
2.7 結構數據和單元數據
2.7.1 結構數據
1.結構矩陣的建立與引用
建立一個結構矩陣可采用給結構成員賦值的辦法。
具體格式為:
結構矩陣名.成員名=表達式
其中表達式應理解為矩陣表達式。
2.結構成員的修改
可以根據需要增加或刪除結構的成員。
例如要給結構矩陣a增加一個成員x4,可給a中任意一個元素增加成員x4:
a(1).x4=‘410075’;但其他成員均為空矩陣,可以使用賦值語句給它賦確定的值。
要刪除結構的成員,則可以使用rmfield函數來完成。
例如,刪除成員x4:
a=rmfield(a,‘x4’);2.7.2 單元數據
建立單元矩陣和一般矩陣相似,只是矩陣元素用大括號括起來。
可以用帶有大括號下標的形式引用單元矩陣元素。例如b{3,3}。單元矩陣的元素可以是結構或單元數據。
可以使用celldisp函數來顯示整個單元矩陣,如celldisp(b)。
總結
以上是生活随笔為你收集整理的MATLAB学习笔记(二)——数据及其运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab里的speed,matlab
- 下一篇: 无论用手工处理还是用计算机进行处理,会计