個(gè)人主頁(yè):學(xué)習(xí)前端的小z
個(gè)人專欄:HTML5和CSS3悅讀
本專欄旨在分享記錄每日學(xué)習(xí)的前端知識(shí)和學(xué)習(xí)筆記的歸納總結(jié),歡迎大家在評(píng)論區(qū)交流討論!
?一、MATLAB數(shù)據(jù)類型和運(yùn)算符
??1 MATLAB的數(shù)據(jù)類型
??1.1 特殊常量
MATLAB有些固定的變量,稱為特殊常量。這些特殊常量具有特定的意義,用戶在定義變量名時(shí)應(yīng)避免使用。
在MATLAB語(yǔ)言中,需要知道程序或者代碼的運(yùn)行時(shí)間,可以使用計(jì)時(shí)函數(shù)tic/toc,和etime兩種方法實(shí)現(xiàn)。
(1)tic/toc方法
例如:
tic
%程序段
toc%返回時(shí)間就是程序運(yùn)行時(shí)間
(2)etime方法
函數(shù)命令格式為:
etime(t2,t1)
其中t2和t1可以使用clock函數(shù)獲得。
例如:
t1=clock
%程序段
??1.2 變量
變量是其值可以改變的量,是數(shù)值計(jì)算的基本單元。MATLAB變量使用無(wú)需事先定義和聲明,也不需要指定變量的數(shù)據(jù)類型??梢宰詣?dòng)根據(jù)變量值或?qū)ψ兞坎僮鱽?lái)識(shí)別變量類型。在變量賦值過(guò)程中,自動(dòng)使用新值替換舊值,用新值類型替換舊值類型。
變量的命名規(guī)則:
(1)變量名由字母、數(shù)字和下劃線組成,且第一個(gè)字符為字母,不能有空格和標(biāo)點(diǎn)符號(hào)。例如:“1a”,“a 1”、“_a”“a%”、“b-1”和“變量a”都是不合法的變量名。
(2)變量名區(qū)分大小寫。例如P1Q,p1q,P1q,p1Q是四個(gè)不同的變量。
(3)變量名的長(zhǎng)度上限為63個(gè)字符,第63個(gè)字符后面的字符被忽略。
(4)關(guān)鍵字或者系統(tǒng)的函數(shù)名。
??1.3 整數(shù)
MATLAB R2020a提供8種常見(jiàn)的整數(shù)類型,可以使用類型轉(zhuǎn)換函數(shù)將各種整數(shù)類型強(qiáng)制互相轉(zhuǎn)換。下表給出MATLAB各種整數(shù)類型的取值范圍和類型轉(zhuǎn)換函數(shù)。
??1.4 浮點(diǎn)數(shù)
浮點(diǎn)數(shù)包括單精度型(single)和雙精度型(double),默認(rèn)的數(shù)據(jù)類型是雙精度型。單精度型取值范圍是
;雙精度型取值范圍是 ,浮點(diǎn)數(shù)類型可以用類型轉(zhuǎn)換函數(shù)single ( )和double()互相轉(zhuǎn)換。
>> y1=int8(1.6e16) %將浮點(diǎn)數(shù)強(qiáng)制轉(zhuǎn)換為有符號(hào)8位整數(shù)
y1 = 127
>> y2=int16(1.6e16) %將浮點(diǎn)數(shù)強(qiáng)制轉(zhuǎn)換為有符號(hào)16位整數(shù)
y2= 32767
>> y3=int8(2.65) % 將浮點(diǎn)數(shù)強(qiáng)制轉(zhuǎn)換為有符號(hào)8位整數(shù)
y3 = 3
>> y4=uint8(-3.2) % 8位無(wú)符號(hào)整數(shù)最小值是0
y4 = 0
>> y5=1/3 % MATLAB默認(rèn)的數(shù)據(jù)類型是雙精度型
y5 = 0.3333
>> y6=single(1/3) % 用single()函數(shù),將雙精度型強(qiáng)制轉(zhuǎn)換為單精度型
y6 = 0.3333
??1.5 復(fù)數(shù)
MATLAB用特殊變量i或j表示虛數(shù)的單位。MATLAB中復(fù)數(shù)運(yùn)算可以直接進(jìn)行。復(fù)數(shù)z可以通過(guò)以下幾種方式產(chǎn)生:
z=a+bi或者z=a+bj %其中a為實(shí)部,b為虛部
z=a+bi或者z=a+bj
z=rexp(ithetha) %其中r為半徑,thetha為相角(以弧度為單位)
z=complex(a,b)
z=a+b*sqrt(-1)
MATLAB復(fù)數(shù)運(yùn)算常見(jiàn)函數(shù)如下表所示:
??2 MATLAB運(yùn)算符
三種常見(jiàn)運(yùn)算符:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符
??2.1 算術(shù)運(yùn)算符
(1)加、減、乘和乘方運(yùn)算規(guī)則與傳統(tǒng)的數(shù)學(xué)定義一樣,用法也相同。
(2)點(diǎn)運(yùn)算是指對(duì)應(yīng)元素點(diǎn)對(duì)點(diǎn)運(yùn)算,要求參與運(yùn)算矩陣的維度要一樣。點(diǎn)左除與點(diǎn)右除不一樣,A./B是指A的對(duì)應(yīng)元素除以B的對(duì)應(yīng)元素,A.\B是指B的對(duì)應(yīng)元素除以A的對(duì)應(yīng)元素。
(3)MATLAB除法相對(duì)復(fù)雜些,對(duì)于單個(gè)數(shù)值運(yùn)算,右除和傳統(tǒng)除法一樣,即a/b=a÷b;而左除與傳統(tǒng)除法相反,即a\b=b÷a。對(duì)于矩陣運(yùn)算,左除A\B相當(dāng)于矩陣方程組 的解,即X=A\B=inv(A)B; 右除B/A相當(dāng)于矩陣方程組 的解,即X=B/A= Binv(A)。
下圖是MATLAB中常用的數(shù)學(xué)函數(shù):
說(shuō)明:
(1)abs函數(shù)可以求實(shí)數(shù)的絕對(duì)值,復(fù)數(shù)的模和字符串的ASII值,比如:abs(-2.3)=2.3;abs(3+4i)=5; abs(‘a(chǎn)’)=97。
(2)MATLAB語(yǔ)言有四個(gè)取整的函數(shù):round,fix,floor和ceil,它們之間是有區(qū)別的。比如:round(1.49)=1;fix(1.49)=1;floor(1.49)=1;ceil(1.49)=2。round(-1.51)=-2;fix(-1.51)=-1;floor(-1.51)=-2;ceil(-1.51)=-1。
(3)MATLAB語(yǔ)言中以自然對(duì)數(shù)函數(shù)是log10(x),而不是lg(x),自然對(duì)數(shù)函數(shù)是exp(x),而不是e^(x)。
(4)符號(hào)函數(shù)sign(x)的值有三種,當(dāng)x=0,sign(x)=0;當(dāng)x>0, sign(x)=1;當(dāng)x<0, sign(x)=-1。
(5)MATLAB語(yǔ)言三角函數(shù)都是對(duì)弧度操作,使用三角函數(shù)時(shí)候,需要將度變換為弧度,變換公式為:弧度=2pi(度/360)。比如:數(shù)學(xué)上的sin(60),MATLAB語(yǔ)言應(yīng)該寫成:sin(2pi60/360)。
??2.2 關(guān)系運(yùn)算符
MATLAB語(yǔ)言有大于、大于等于、小于、小于等于、等于和不等于六種常見(jiàn)關(guān)系運(yùn)算符,如下表所示:
注意:關(guān)系運(yùn)算符主要用于數(shù)與數(shù)、數(shù)與矩陣元素、矩陣與矩陣之間元素進(jìn)行比較,返回兩者之間的關(guān)系的矩陣(由數(shù)0和1組成),0和1分別表示關(guān)系不滿足和滿足。矩陣與矩陣之間進(jìn)行比較時(shí),兩個(gè)矩陣的維度要一樣。
??2.3 邏輯運(yùn)算符
4種邏輯運(yùn)算符:&(與)、|(或)、~(非)和xor(異或)。
運(yùn)算規(guī)則:
(1)在邏輯運(yùn)算中,所有非零元素均被認(rèn)為真,用1表示;零元素為假,用0表示。
(2)如果兩個(gè)同維矩陣參與邏輯運(yùn)算,矩陣對(duì)應(yīng)元素按標(biāo)量規(guī)則進(jìn)行邏輯運(yùn)算,得到同維的由1或者0構(gòu)成的矩陣。
(3)如果一個(gè)標(biāo)量和一個(gè)矩陣參與邏輯運(yùn)算,標(biāo)量和矩陣的每個(gè)元素按標(biāo)量規(guī)則進(jìn)行邏輯運(yùn)算,得到同維的由1或者0構(gòu)成的矩陣。
??2.4 優(yōu)先級(jí)
算術(shù)運(yùn)算符優(yōu)先級(jí)最高,關(guān)系運(yùn)算符次之,邏輯運(yùn)算符為最低。即程序先執(zhí)行算術(shù)運(yùn)算,然后執(zhí)行關(guān)系運(yùn)算,最后執(zhí)行邏輯運(yùn)算。在邏輯“與”、“或”、“非”三種運(yùn)算符中,“非”的優(yōu)先級(jí)最高,“與”和“或”的優(yōu)先級(jí)相同,即從左往右執(zhí)行。實(shí)際應(yīng)用中,可以通過(guò)括號(hào)來(lái)調(diào)整運(yùn)算的順序。
例如:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-852323.html
>> q=(1>2|2<1+2)
q = 1
其中,MATLAB先執(zhí)行算術(shù)運(yùn)算:1+2=3,然后執(zhí)行關(guān)系運(yùn)算1>2為0,和2<3為1,最后執(zhí)行邏輯運(yùn)算0|1=1。
個(gè)人主頁(yè):學(xué)習(xí)前端的小z
個(gè)人專欄:HTML5和CSS3悅讀
本專欄旨在分享記錄每日學(xué)習(xí)的前端知識(shí)和學(xué)習(xí)筆記的歸納總結(jié),歡迎大家在評(píng)論區(qū)交流討論!
?二、矩陣的創(chuàng)建
MATLAB各種數(shù)據(jù)類型都是以矩陣形式存在,大部分運(yùn)算都是基于矩陣運(yùn)算,矩陣主要分為三類:數(shù)值矩陣,符號(hào)矩陣和特殊矩陣
??1 直接輸入矩陣
MATLAB語(yǔ)言最簡(jiǎn)單的創(chuàng)建矩陣方法是通過(guò)鍵盤在命令窗口直接輸入矩陣,直接輸入法的規(guī)則是:
- 將所有矩陣元素置于一對(duì)方括號(hào)“[ ]”內(nèi);
- 同一行不同元素之間用逗號(hào)“,”或者空格符來(lái)分隔;
- 不同行用分號(hào)“;”或者回車符分隔。
例如:
在命令空間輸入:
>> A=[1 2;3 4] %元素之間用空格符分隔,換行用分號(hào)
A =1 2
??????3 4
MATLAB語(yǔ)言創(chuàng)建復(fù)數(shù)矩陣,方法和創(chuàng)建一般實(shí)數(shù)矩陣一樣,虛數(shù)單位用i或者j表示。
- 虛部和虛數(shù)單位之間可以使用乘號(hào)“”連接,也可以忽略乘號(hào)“”;
- 復(fù)數(shù)矩陣元素可以用運(yùn)算表達(dá)式;
- 虛數(shù)單位用i或者j,顯示時(shí)都是i。
例如,創(chuàng)建復(fù)數(shù)矩陣:
>> B=[1+2i,2-3*j;2+2*sqrt(-2),3.5j]
B =
1.0000 + 2.0000i 2.0000 - 3.0000i
2.0000 + 2.8284i 0.0000 + 3.5000i
??2 冒號(hào)生成矩陣
利用冒號(hào)“:” 產(chǎn)生步長(zhǎng)相等的一維數(shù)組或行向量。其格式為:
x=a:step:b
- a是數(shù)組或者行向量的第一個(gè)元素,b是最后一個(gè)元素,step是步長(zhǎng)增量;
- 冒號(hào)表達(dá)式可以產(chǎn)生一個(gè)由a開(kāi)始到b結(jié)束,以步長(zhǎng)step自增或自減(步長(zhǎng)為負(fù)值,b<a)的數(shù)組或者- 行向量;
- 如果步長(zhǎng)step=1,則冒號(hào)表達(dá)式可以省略步長(zhǎng),直接寫為x=a:b。
例如:
>> x1=1:1:10
x1 = 1 2 3 4 5 6 7 8 9 10
>> x2=1:10
x2 = 1 2 3 4 5 6 7 8 9 10
>> x3=10:-2:0
x3 = 10 8 6 4 2 0
??3 利用函數(shù)生成矩陣
??3.1 linspace函數(shù)
可以用linspace函數(shù)生成初值、終值和元素個(gè)數(shù)已知的一維數(shù)組或者行向量,元素之間是等差數(shù)列。其調(diào)用格式如下:
x=linspace(a,b,n)
- a和b分別是生成一維數(shù)組或者行向量的初值和終值,n是元素總數(shù)。當(dāng)n省略時(shí)候,自動(dòng)產(chǎn)生100個(gè)元素;
- linspace函數(shù)產(chǎn)生的一維數(shù)組或者行向量,n個(gè)元素是等差數(shù)列;
- 當(dāng)a>b,元素之間是等差遞減;當(dāng)a<b,元素之間是等差遞增;
- 顯然,linspace(a,b,n)與a: (b-a)/(n-1): b是等價(jià)的。
例如:
>> x1=linspace(0,10,5)
x1 = 0 2.5000 5.0000 7.5000 10.0000
>> x2=linspace(10,0,5)
x2 = 10.0000 7.5000 5.0000 2.5000 0
>> x3=10:(0-10)/(5-1):0
x3 =10.0000 7.5000 5.0000 2.5000 0
??3.2 logspace函數(shù)
MATLAB語(yǔ)言可以用logspace函數(shù)生成一維數(shù)組或者行向量,元素之間也是對(duì)數(shù)等比數(shù)列。其調(diào)用格式如下.
x=logspace(a,b,n)
其中:
- 第一個(gè)元素為10a,最后一個(gè)元素為10b,元素個(gè)數(shù)為n的對(duì)數(shù)等比數(shù)列;
- 如果b的值為pi,則該函數(shù)產(chǎn)生到pi之間n個(gè)對(duì)數(shù)等比數(shù)列。
例如:
>> x1=logspace(1,2,10)
x1 = 10.0000 12.9155 16.6810 21.5443 27.8256 35.9381 46.4159 59.9484 77.4264 100.0000
>> x2=logspace(1,pi,10)
x2 = 10.0000 8.7928 7.7314 6.7980 5.9774 5.2558 4.6213 4.0634 3.5729 3.1416
??4 利用文本文件生成矩陣
矩陣還可以由文本文件生成,即先建立txt數(shù)據(jù)文件,然后在命令窗口直接調(diào)用該文件,就能產(chǎn)生數(shù)據(jù)矩陣。需要注意,txt文件中不含變量名稱,文件名為矩陣變量名,每行數(shù)值個(gè)數(shù)相等。
優(yōu)點(diǎn):可以將數(shù)據(jù)存儲(chǔ)在文本文件中,利用load函數(shù),直接將數(shù)據(jù)讀入工作空間中,自動(dòng)生成矩陣,而不需要手動(dòng)輸入數(shù)據(jù)。
例如:
利用文本文件建立矩陣A,其中
把下面代碼另存為工作目錄中,文件名為A.txt文件。
1 2
3 4
>> load A.txt
>> A
A =
1 2
3 4
??5 利用M文件生成矩陣
對(duì)于一些比較大的常用矩陣,可以立一個(gè)M文件,在命令窗口中調(diào)用文件,適合大型矩陣創(chuàng)建,便于修改。需要注意,M文件中的矩陣變量名不能與文件名相同,否則變量名和文件名會(huì)混亂。
例如:
%定義exam_2_2.m函數(shù),將下面代碼另存為工作目錄下的
A=[34 32 30 28 26 24
32 30 28 26 24 22
30 28 26 24 22 20
28 26 24 22 20 18
26 24 22 20 18 16]
>> exam_2_2
A = 34 32 30 28 26 24
32 30 28 26 24 22
30 28 26 24 22 20
28 26 24 22 20 18
26 24 22 20 18 16
??6 特殊矩陣的生成
MATLAB語(yǔ)言中內(nèi)置了許多特殊矩陣的生成函數(shù),可以通過(guò)這些函數(shù)自動(dòng)生成具有不同特殊性質(zhì)的矩陣。下表是MATLAB語(yǔ)言常見(jiàn)特殊矩陣函數(shù)。
??6.1 單位矩陣
MATLAB語(yǔ)言生成單位矩陣的函數(shù)是eye,其調(diào)用格式如下:
A1=eye(n);
A2=eye(m,n)。
其中:
A1=eye(n)表示生成n行n列的單位矩陣;
A2=eye(m,n)表示生成m行n列的單位矩陣。
例如:
>> A1=eye(3)
A1= 1 0 0
0 1 0
0 0 1
>> A2=eye(2,3)
A2 =
1 0 0
0 1 0
??6.2 0矩陣
MATLAB語(yǔ)言生成所有元素為0的矩陣函數(shù)是zeros,其調(diào)用格式如下:
A1=zeros(n);
A2=zeros(m,n)。
其中:
A1= zeros(n)表示生成n行n列的0矩陣;
A2=zeros(m,n)表示生成m行n列的0矩陣。
例如:
>> A1=zeros(3)
A1 = 0 0 0
0 0 0
0 0 0
>> A2=zeros(1,3)
A 2= 0 0 0
??6.3 1矩陣
MATLAB語(yǔ)言生成所有元素為1的矩陣函數(shù)是ones,其調(diào)用格式如下:
A1=ones(n);
A2=ones(m,n)。
其中:
- A1= ones(n)表示生成n行n列的1矩陣;
- A2=ones(m,n)表示生成m行n列的1矩陣。
例如:
>> A1=ones(3)
A1= 1 1 1
1 1 1
1 1 1
>> A2=ones(2,3)
A2 =1 1 1
1 1 1
??6.4 魔方矩陣
魔方矩陣是指行、列、正和反斜對(duì)角線元素之和都相等的矩陣,MATLAB語(yǔ)言用magic函數(shù)生成魔方矩陣,其調(diào)用格式如下:
A=magic(n)
其中,A=magic(n)表示生成n行n列的魔方矩陣,n>0且n≠2 。
例如:
>> A=magic(3)
A = 8 1 6
3 5 7
4 9 2
>> B=sum(A) %計(jì)算每列的和
B = 15 15 15
>> C=sum(A') %計(jì)算每行的和
C = 15 15 15
顯然,由B和C結(jié)果可知,矩陣A是一個(gè)魔方矩陣。
??6.5 0~1均勻分布隨機(jī)矩陣
MATLAB語(yǔ)言生成0~1均勻分布的隨機(jī)矩陣函數(shù)是rand,其調(diào)用格式如下:
- A1= rand(n)表示生成 n*n個(gè)元素值為0~1均勻分布的隨機(jī)矩陣;
- A2= rand(m, n)表示生成m*n 個(gè)元素值為0~1均勻分布的隨機(jī)矩陣;
- A3=a+(b-a)rand(m,n) 表示生成mn 個(gè)元素值為a~b均勻分布的隨機(jī)矩陣。
例如:
>> A1=rand(3)
A1 = 0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
>> A3 = 10 + (15 - 10)*rand(2,3)
A3 = 10.7094 14.5787 14.7975
12.1088 13.9610 13.2787
??6.6 正態(tài)分布隨機(jī)矩陣
MATLAB語(yǔ)言生成均值為0,單位方差的正態(tài)分布的隨機(jī)矩陣函數(shù)是randn,其調(diào)用格式如下:
- A1= randn(n)表示生成 n*n個(gè)元素且均值為0,單位方差的正態(tài)分布的隨機(jī)矩陣;
- A2= randn(m, n)表示生成m*n 個(gè)元素的正態(tài)分布隨機(jī)矩陣;
- A3=a+sqrt(b)*randn(m,n) 表示均值為a,方差為b。
例如:
>> A1=randn(3)
A1 = -1.2075 0.4889 -0.3034
0.7172 1.0347 0.2939
1.6302 0.7269 -0.7873
>> A3 = 1 + sqrt(0.1)*randn(2,3) % 均值為1,方差為0.1
A3 =
1.1028 1.4333 0.9677
0.7613 0.4588 0.9236
??6.7 對(duì)角矩陣
MATLAB語(yǔ)言生成對(duì)角矩陣函數(shù)是diag,其調(diào)用格式如下:
A=diag(v,k)表示生成以向量v元素作為矩陣A的第k條對(duì)角線元素的對(duì)角矩陣。
當(dāng)k=0時(shí),v 為A的主對(duì)角線;當(dāng)k>0時(shí),為主對(duì)角線上方第k條對(duì)角線元素;當(dāng)k<0時(shí),為主對(duì)角線下方第k條對(duì)角線元素。
例如:
>> v=[3 2 1];
>> A1=diag(v)
A1 = 3 0 0
0 2 0
0 0 1
>> A2=diag(v,1)
A2 = 0 3 0 0
0 0 2 0
0 0 0 1
0 0 0 0
若A是一個(gè)矩陣,則diag(A)是提取矩陣A的對(duì)角線矩陣。
>> A=[1 2 3;4 5 6];
>> B=diag(A)
B = 1
5
??6.8 三角矩陣
MATLAB語(yǔ)言生成三角矩陣函數(shù)是tril和triu,其調(diào)用格式如下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-852323.html
- A1=tril(A,k)表示生成矩陣A中第k條對(duì)角線的下三角部分的矩陣;
- A1=triu(A,k)表示生成矩陣A中第k條對(duì)角線的上三角部分的矩陣;
其中, k=0為A的主對(duì)角線,k>0為A的主對(duì)角線以上, k<0為A的主對(duì)角線以下。
例如:
>> A=ones(4);
>> L=tril(A,-2)
L =
0 0 0 0
0 0 0 0
1 0 0 0
1 1 0 0
>> U=triu(A,0)
U =
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
到了這里,關(guān)于MATLAB數(shù)據(jù)類型和運(yùn)算符+矩陣創(chuàng)建的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!