Matlab
zcy
第二章
2.1 數(shù)據(jù)類型
matlab中有15種基本數(shù)據(jù)類型,每種數(shù)據(jù)類型均以數(shù)組/矩陣的形式出現(xiàn)
整數(shù)
matlab支持1、2、4、8字節(jié)的有符號整數(shù)和無符號整數(shù)
浮點數(shù)
有單精度和雙精度兩種浮點數(shù)
復數(shù)
復數(shù)包含實部和虛部,可以用i或者j來表示虛部
2.2 基本矩陣操作
2.2.1 矩陣的構(gòu)造
2.2.2 矩陣大小的改變
2.2.3矩陣下標引用
2.3 運算符和特殊符號
2.4 字符串處理函數(shù)
第三章 數(shù)學運算
3.1 矩陣運算
3.1.1 矩陣分析
-
向量間的距離 norm()
計算和原點的距離:N = norm(E,2)
>> norm([1:5],2) ans = 7.4162
計算兩個向量間的距離:N = norm(E)
>> x = [1,2,3,4,5]; >> y = [3,0,5,2,2]; >> e = x-y; >> norm(e) ans = 5
-
矩陣的秩 rank()
矩陣中線性無關(guān)的列向量個數(shù)成為列秩,線性無關(guān)的行向量個數(shù)成為行秩
>> eye(4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 >> rank(eye(4)) ans = 4
-
矩陣的行列式 det()
>> A = [1 2 3;4 5 6;7 8 9]; >> A_det = det(A) A_det = 0
行列陣為0的矩陣為奇異矩陣,用函數(shù) cond() 進行判定
-
矩陣的跡 trace()
矩陣對角元素之和
>> disp(['trace of A = ',num2str(trace(A))]); trace of A = 15 >> A = [1 2 3;4 5 6;7 8 9]; >> disp(['trace of A = ',num2str(trace(A))]); trace of A = 15
-
矩陣的化零矩陣 null()
對于非滿秩矩陣A,若存在矩陣Z使得 AZ = 0 且 Z的轉(zhuǎn)置Z = I,則稱矩陣Z 為矩陣A的化零矩陣
>> A = [1 2 3;1 2 3;4 5 6]; >> Z = null(A) Z = -0.4082 0.8165 -0.4082 >> A*Z ans = 1.0e-14 * 0 0 -0.1776 >> Z'*Z ans = 1.0000
-
矩陣的正交空間 orth()
矩陣A的正交空間Q滿足Q*Q’=I, 且Q與A具有共同的列基底
>> A = [1 2 3;4 5 6;7 8 9;10 11 12]; >> Q = orth(A) Q = -0.1409 0.8247 -0.3439 0.4263 -0.5470 0.0278 -0.7501 -0.3706 >> Q'*Q ans = 1.0000 -0.0000 -0.0000 1.0000
-
矩陣的簡化梯形形式 rref()
>> A = [1 2 3 4;1 1 5 6;1 2 3 6;1 1 5 7]; >> rref(A) ans = 1 0 7 0 0 1 -2 0 0 0 0 1 0 0 0 0
-
矩陣空間之間的角度 subspace()
矩陣空間之間的角度代表具有相同行數(shù)的兩個矩陣的線性相關(guān)程度.夾角越小代表線性相關(guān)程度越高
>> A = [1 2 3;4 5 6;7 8 9]; >> B = [1 2;3 4;5 6]; >> subspace(A,B) ans = 9.2918e-16
3.1.2 線性方程組
求線性方程組 AX = B 的解
A\B 相當于 inv(A) * B,其中 inv(A) 是矩陣A的逆
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> B = [1;2;3];
>> A\B
ans =
0.0500
0.3000
0.0500
用matlab求解以下方程
{
x
+
2
y
+
3
z
=
5
2
x
+
4
y
+
6
z
=
2
x
+
3
y
+
7
z
=
12
\left\{ \begin{array}{c} x+2y+3z=5\\ 2x+4y+6z=2\\ x+3y+7z=12 \end{array} \right.
????x+2y+3z=52x+4y+6z=2x+3y+7z=12?
>> A = [1 2 3;2 4 6;1 3 7];
>> B = [5;2;12];
>> pinv(A)*B
ans =
-2.6714
-2.5429
3.1857
>> inv(A)*B
警告: 矩陣為奇異工作精度。
>> A\B
警告: 矩陣為奇異工作精度。
注意:如果矩陣不是方陣,或是奇異方陣,可以用矩陣的偽逆pinv(A) 給出方程組的一個解或最小二乘意義下的最優(yōu)解,即 *pinv(A)B
3.1.3 矩陣分解
矩陣分解是把一個矩陣分解成比較簡單或者對它的性質(zhì)比較熟悉的若干個矩陣的乘積的形式
-
Cholesky分解 chol()
正定矩陣: 設(shè)M是n階方陣,如果對任何非零向量z,都有 z’Mz > 0,就稱M為正定矩陣
把對稱正定矩陣A表示為上三角矩陣R的轉(zhuǎn)置與其本身的乘積,即A=R’R
>> a=[4 -1 1; -1 4.25 2.75; 1 2.75 3.5] a = 4.0000 -1.0000 1.0000 -1.0000 4.2500 2.7500 1.0000 2.7500 3.5000 >> chol(a) ans = 2.0000 -0.5000 0.5000 0 2.0000 1.5000 0 0 1.0000 >> A = pascal(4) A = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 >> chol(A) ans = 1 1 1 1 0 1 2 3 0 0 1 3 0 0 0 1
-
LU分解 lu()
將任意一個方陣A分解為一個置換下三角矩陣L、一個上三角矩陣U的乘積,即 A = LU
>> A = [1 4 2;5 6 9;4 1 8]; >> [L1,U1] = lu(A) L1 = 0.2000 -0.7368 1.0000 1.0000 0 0 0.8000 1.0000 0 U1 = 5.0000 6.0000 9.0000 0 -3.8000 0.8000 0 0 0.7895
將任意一個方陣A分解為一個下三角矩陣L、一個上三角矩陣U、置換矩陣P,滿足 P * X = L * U
>> A = [1 4 2;5 6 9;4 1 8]; >> [L2,U2,P] = lu(A) L2 = 1.0000 0 0 0.8000 1.0000 0 0.2000 -0.7368 1.0000 U2 = 5.0000 6.0000 9.0000 0 -3.8000 0.8000 0 0 0.7895 P = 0 1 0 0 0 1 1 0 0
PS:置換矩陣是一種系數(shù)只由0和1組成的方塊矩陣。置換矩陣的每一行和每一列都恰好有一個1,其余的系數(shù)都是0
-
**QR分解 **qr()
將mxn的矩陣A分解為mxn的矩陣Q、nxn的上三角矩陣R的乘積,即A=Q*R,且Q’*Q=I
>> A = [1 4 2;5 6 9]; >> [Q,R] = qr(A) Q = -0.1961 -0.9806 -0.9806 0.1961 R = -5.0990 -6.6679 -9.2175 0 -2.7456 -0.1961 >> qr(A) //返回上三角矩陣R ans = -5.0990 -6.6679 -9.2175 0.8198 -2.7456 -0.1961 //為啥跟上面的R不一樣
-
奇異值分解
將mxn的矩陣A分解為A=U*S*V’,U為mxm的酉方陣,V為nxn的酉方陣,S為mxn的酉方陣
>> A=[1 4 2;5 6 9]; >> [U S V]=svd(A) U = 0.3243 0.9460 0.9460 -0.3243 S = 12.5742 0 0 0 2.2111 0 V = 0.4019 -0.3054 -0.8632 0.5545 0.8314 -0.0360 0.7287 -0.4642 0.5035
-
**Schur分解 **schur()
將復方陣A分解為A=U*L*U’,其中U為酉矩陣,L為上三角矩陣,其對角線元素為A的特征值
>> A=[1 4 2;5 6 9;4 1 8]; [U L]=schur(A) U = 0.3494 0.8929 0.2838 0.8242 -0.1489 -0.5464 0.4456 -0.4248 0.7880 L = 12.9859 -0.3899 7.2707 0 -0.4658 -3.9981 0 0 2.4799
3.1.4 矩陣的特征值和特征向量
d = eig(A) 返回矩陣A的所有特征值
[V,D] = eig(A) 返回矩陣A的所有特征值和特征向量
>> A=[6 12 19;-9 -20 -33;4 9 15]
A =
6 12 19
-9 -20 -33
4 9 15
>> eig(A)
ans =
-1.0000 + 0.0000i
1.0000 + 0.0000i
1.0000 - 0.0000i
>> X=[-2 1 1;0 2 0;-4 1 3];
>> [V D]=eig(X)
V =
-0.7071 -0.2425 0.3015
0 0 0.9045
-0.7071 -0.9701 0.3015
D =
-1 0 0
0 2 0
0 0 2
3.1.5 矩陣的相似變換
對于方陣A和非奇異矩陣B可得到相似矩陣 X = B逆 * A * B
- 對角陣變換
- Jordan變換
3.1.6 非線性運算
3.2 矩陣元素運算
3.2.1 三角函數(shù)
例:計算矩陣每個元素的正弦,以弧度為單位
>> A=[6 12 19;-9 -20 -33;4 9 15]
A =
6 12 19
-9 -20 -33
4 9 15
>> Y=sin(A)
Y =
-0.2794 -0.5366 0.1499
-0.4121 -0.9129 -0.9999
-0.7568 0.4121 0.6503
3.2.2 指數(shù)和對數(shù)函數(shù)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Q3PPgyXf-1634716262868)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210928205609952.png)]
例,計算矩陣A=[6 12 19;-9 -20 -33;4 9 15]每個元素的指數(shù)(e的冪次)
>> A=[6 12 19;-9 -20 -33;4 9 15];
>> exp(A)
ans =
1.0e+08 *
0.0000 0.0016 1.7848
0.0000 0.0000 0.0000
0.0000 0.0001 0.0327
3.2.3 復數(shù)函數(shù)
例如,計算矩陣A=[6 3+4i -19;5 1-1i 2;-4 0 15]每個元素的模
>> A=[6 3+4i -19;5 1-1i 2;-4 0 15]
A =
6.0000 + 0.0000i 3.0000 + 4.0000i -19.0000 + 0.0000i
5.0000 + 0.0000i 1.0000 - 1.0000i 2.0000 + 0.0000i
-4.0000 + 0.0000i 0.0000 + 0.0000i 15.0000 + 0.0000i
>> abs(A)
ans =
6.0000 5.0000 19.0000
5.0000 1.4142 2.0000
4.0000 0 15.0000
3.2.4 截斷和求余函數(shù)
例如,分別使用 fix() floor() ceil() round(),對向量A的每個元素進行截斷運算
>> A=[-1.55 -1.45 1.45 1.55];
>> Y=[fix(A) ; floor(A) ; ceil(A) ; round(A)]
Y =
-1 -1 1 1
-2 -2 1 1
-1 -1 2 2
-2 -1 1 2
例如,分別使用函數(shù)mod() rem(),對 -5/2 進行求余
>> rem(-5,2)
ans =
-1
>> mod(-5,2)
ans =
1
第四章 基本編程
matlab可以進行程序設(shè)計,編寫擴展名為.m的M文件,M文件的語法規(guī)則與C語言幾乎一致
將有關(guān) Matlab 命令編成程序存儲在一個文件中(M 文件),然后在命令窗口中運行該文件,Matlab 就會自動依次執(zhí)行文件中的命令,直到全部命令執(zhí)行完畢
顯示M文件內(nèi)容,最簡單的方法就是使用type命令
創(chuàng)建M文件,通過file → new → M-file
4.1 M文件基礎(chǔ)
M文件有函數(shù)和腳本兩種格式
4.1.1 函數(shù)
function關(guān)鍵詞為引導,定義函數(shù)名為test,輸入?yún)?shù)x,輸出參數(shù)y
注意函數(shù)名和文件名必須相同
例如,建立一個函數(shù)文件將變量a和b的值互換,然后在命令窗口調(diào)用該函數(shù)文件
4.1.2 腳本
可包含matlab的各種命令,類似于dos系統(tǒng)中批處理文件
前3章在命令窗口輸入的每個代碼或代碼序列,都可以分別復制到新建M文件中然后保存為.m文件
運行方法:將腳本所在的目錄設(shè)為當前的工作目錄,debug菜單 → run
創(chuàng)建并運行腳本舉例
函數(shù)中的變量(特殊聲明除外)都是局部變量,腳本的變量都是全局變量,駐留在matlab工作空間里,只要不關(guān)閉matlab,不使用clear清內(nèi)存,這些變量將一直保存
4.2 變量和語句
4.2.1 變量類型
必須以字母開頭,之后可以是任意字母數(shù)字下劃線
全局變量的聲明:global var1 var2
全局變量說明:
-
使用前先定義,建議放在函數(shù)體的首行位置
-
建議采用大寫字母命名;
-
全局變量會破壞程序的獨立性,不利于模塊化,不推薦使用
例如,創(chuàng)建腳本script2.m和function2.m
舉例進一步理解全局變量:
4.2.2 程序控制結(jié)構(gòu)
-
順序結(jié)構(gòu)
-
循環(huán)結(jié)構(gòu)
for循環(huán)
for 循環(huán)變量=起始值:步長:終止值 循環(huán)體 end
例一
%求1+3+5+7+9 %sum = 25 clc sum=0; for i=1:2:10 sum=sum+i; end sum
例二
%求1!+2!+3!+ … +5!的值 %sum = 153 clc sum=0; for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end sum=sum+pdr; end sum
while循環(huán)
while 表達式 循環(huán)體 end
例一
%求1到100和 %sum = 5050 clear sum=0; i=0; while i<100 i=i+1; sum=sum+i; end sum
-
選擇結(jié)構(gòu)
if-else-end
if 表達式 程序模塊1 elseif 程序模塊2 elseif 程序模塊3 else 程序模塊4 end
例如
clear n=input('輸入n= '); if n>=90 r='A' elseif n>=80 r='B' elseif n>=70 r='C' elseif n>=60 r='D' else r='E' end
switch-case-otherwise
switch 表達式 case 數(shù)值1 程序模塊1; case 數(shù)值2 程序模塊2; otherwise 程序模塊n end
例如
clear n=input('輸入n= '); switch fix(n/10) case {10,9} r='A' case 8 r='B' case 7 r='C' case 6 r='D' otherwise r='E' end
-
其他語句
break
continue
return
-
容錯函數(shù)
error
try-catch-end
-
時間運算函數(shù)
>> date ans = '13-Oct-2021' >> calendar Oct 2021 S M Tu W Th F S 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 0 >> datevec('12/24/1984 12:45') ans = 1984 12 24 12 45 0
-
人機交互命令
pause 等待用戶反應
echo命令
input 用戶輸入提示
keyboard 請求鍵盤輸入
-
輸出命令
disp
fprintf
fprintf(fid,format,variables) %e ( 采用科學計算形式 ) %f ( 采用浮點數(shù)形式 ) %g ( 由系統(tǒng)自動選取上述兩種格式之一 ) %s ( 輸出字符串 ) %d ( 十進制數(shù) ) \n ( 換行 ) \t ( 制表符 ) \b ( 退格 ) \\ ( 反斜桿 ) %% ( 百分號 )
第五章 數(shù)據(jù)顯示及存取
二維作圖機制:先畫點再連線
5.1 二維繪圖
函數(shù)plot()
plot(y)是基本二維繪圖函數(shù)
y是向量:下標為橫坐標,元素值為縱坐標
y是實數(shù)矩陣:分別繪制y的各列向量
y是復數(shù)向量:實部為橫坐標,虛部為縱坐標
函數(shù)plot(x,y)
x, y 都是向量:以 x 為橫坐標, y 為縱坐標作平面曲線,x, y 必須具有相同長度。
x, y 都是矩陣:將 x 的列和 y 中相應的列相組合,繪制多條平面曲線,x, y 必須具有相同的大小
x 是向量, y 是矩陣:
若 x 的長度與 y 的行數(shù)相等,則將 x 與 y 中的各列相對應,繪制多條平面曲線
若 x 的長度與 y 的列數(shù)相等,則將 x 與 y 中的各行相對應,繪制多條平面曲線
x 的長度必須等于 y 的行數(shù)或列數(shù)
例:y=cos(x) 在 [0, 4*pi] 上的圖像
函數(shù) plot(x,y,string)
參數(shù)s為指定字符,代表不同的線性、點標和顏色
例如:數(shù)據(jù)點選為菱形,連接曲線選為紅色點畫線
函數(shù)fplot()
fplot函數(shù)則可自適應地對函數(shù)進行采樣,能更好地反應函數(shù)的變化規(guī)律
fplot函數(shù)格式:fplot(fname, lims, linespec)
fname為函數(shù)名,以@(x)f(x)形式出現(xiàn),lims為變量取值范圍,linespec定義繪圖的線性、顏色等
例一
例二
函數(shù)ezplot()
函數(shù)ezplot()用于繪制函數(shù)在某一自變量區(qū)域內(nèi)的圖形
1、ezplot(f): 繪制f=0在默認區(qū)域-2pi<x<2pi內(nèi)的圖形
2、ezplot(f,[min,max]): 繪制函數(shù)在區(qū)域min<x<max內(nèi)的圖形
3、ezplot(f,[xmin,xmax, ymin, ymax]): 繪制函數(shù)f(x,y)=0在區(qū)域xmin<x<xmax, ymin<y<ymax內(nèi)的圖形
5.2 三維繪圖
函數(shù)plot3()
當x y z為長度相同的向量時,函數(shù)將繪制一條分別以 x0 y0 z0為 x y z軸坐標值的空間向量
當x y z都為mxn矩陣時,函數(shù)將繪制m條空間曲線
函數(shù)mesh()
繪制由矩陣 X,Y,Z 所確定的曲面網(wǎng)格圖, C用于確定網(wǎng)格顏色,省略時隨Z值成比例變化
X和Y必須均為向量,若X和Y的長度分別為m和n,則z必須為mxn矩陣
繪制由函數(shù) z=z(x,y) 確定的曲面時,首先需產(chǎn)生一個網(wǎng)格矩陣,然后計算函數(shù)在各網(wǎng)格點上的值
網(wǎng)格生成函數(shù):meshgrid
[X,Y]= meshgrid(x,y)
若 x = y, 則可簡寫為
[X,Y]= meshgrid(x)
繪制等高線 meshc()
繪制邊界面屏蔽 meshz()
函數(shù)surf()
surf(X,Y,Z) 繪制由矩陣 X,Y,Z 所確定的曲面圖,參數(shù)含義同 mesh
mesh 繪制網(wǎng)格圖,surf 繪制著色的三維表面圖文章來源:http://www.zghlxwxcb.cn/news/detail-462130.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-462130.html
到了這里,關(guān)于Matlab使用指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!