matlab logspace 虚数,《MATLAB智能算法超级学习手册》一一1.2 矩阵的表示
本節書摘來自異步社區出版社《MATLAB智能算法超級學習手冊》一書中的第1章,第1.2節,作者:MATLAB技術聯盟 , 高飛 , 許玢更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
1.2 矩陣的表示
MATLAB智能算法超級學習手冊
矩陣和向量是一樣的,用來描述某一個問題的方程組的系數、由方程組的系數和常數構成的方陣。矩陣包括數值矩陣、符號矩陣、特殊矩陣等3種基本樣式。
1.2.1 數值矩陣的生成
1.實數矩陣的輸入
MATLAB的強大功能之一體現在能直接處理向量或矩陣。前提是用戶根據具體的問題輸入待處理的向量或矩陣。
一般簡單的定義矩陣,可以直接按行方式輸入每個元素:同一行中的元素用逗號(,)或者用空格符來分隔,且空格個數不限;不同的行用分號(;)分隔。
所有元素處于一個方括號([ ])內。當矩陣是多維(三維以上)的,且方括號內的元素是維數較低的矩陣時,會有多重方括號。
【例1-1】實數矩陣輸入實例。
>> T = [11 12 1 2 3 4 5 6 7 8 9 10]
T =
Columns 1 through 11
11 12 1 2 3 4 5 6 7 8 9
Column 12
10
>> X = [2.32 3.43;4.37 5.98]
X =
2.3200 3.4300
4.3700 5.9800
>> va = [1 2 3 4 5]
va =
1 2 3 4 5
>> MB = [1 2 4;2 3 3;5 4 5]
MB =
1 2 4
2 3 3
5 4 5
>> Null = [ ] %生成一個空矩陣
Null =
[]
2.復數矩陣的輸入
復數在現行的控制工程以及復平面計算中應用較多。復數矩陣是指帶有虛數的數值矩陣。復數矩陣的生成方式如例1-2和例1-3所示。
【例1-2】復數矩陣輸入方式一實例。
>> a=1.7;b=3/25;
C=[1,3*a+i*b,b*sqrt(a); sin(pi/5),a+7*b,3.9+1]
C =
1.0000 5.1000 + 0.1200i 0.1565
0.5878 2.5400 4.9000
【例1-3】復數矩陣輸入方式二實例。
>> R=[1 2 3;4 5 6], M=[11 12 13;14 15 16]
R =
1 2 3
4 5 6
M =
11 12 13
14 15 16
>> RM=R+i*M
RM =
1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i
4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i
1.2.2 符號矩陣的生成
在MATLAB中輸入符號向量或者矩陣的方法和輸入數值向量或者矩陣在形式上很相似,只不過要用到符號矩陣定義函數sym,或者是用到符號定義函數syms。先定義一些必要的符號變量,再像定義普通矩陣一樣輸入符號矩陣。
1.用命令sym定義矩陣
這時的函數sym實際上在定義一個符號表達式,符號矩陣中的元素可以是任何符號或者表達式,而且長度沒有限制,只是將方括號置于用于創建符號表達式的單引號中。
【例1-4】用命令sym定義矩陣實例。
>> sym_m = sym('[a b c;Jack,Help Me!,NO WAY!]')
sym_m =
[ a, b, c, 0, 0]
[ Jack, Help, factorial(Me), NO, factorial(WAY)]
>> sym_d = sym('[1 2 3;a b c;sin(x) cos(y) tan(z)]')
sym_d =
[ 1, 2, 3]
[ a, b, c]
[ sin(x), cos(y), tan(z)]
2.用命令syms定義矩陣
先定義矩陣中的每一個元素為一個符號變量,然后如數值矩陣操作那樣輸入符號矩陣。
【例1-5】用命令syms定義矩陣實例。
>> syms a b c
>> M1 = sym('Classical');
>> M2 = sym('Claysw');
>> M3 = sym('yellow');
>> yswM123=[a,b,c;M1,M2,M3;2,3,5;5,4,6]
yswM123 =
[ a, b, c]
[ Classical, Claysw, yellow]
[ 2, 3, 5]
[ 5, 4, 6]
3.把數值矩陣轉化成相應的符號矩陣
數值型和符號型在MATLAB中是不相同的,它們之間不能直接進行轉化。MATLAB提供了一個將數值型轉化成符號型的命令,即sym。
【例1-6】數值型轉化成符號型實例。
>> Digit_Ma = [1/3 sqrt(3) 3.1;exp(0.3) log(10) 23^.5]
Syms_Ma = sym(Digit_Ma)
Digit_Ma =
0.3333 1.7321 3.1000
1.3499 2.3026 4.7958
Syms_Ma =
[ 1/3, 3^(1/2), 31/10]
[ 3039611811401035/2251799813685248, 2592480341699211/1125899906842624, 23^(1/2)]
注意:
思考矩陣是用分數形式還是浮點形式表示的。一般情況下,矩陣是以浮點型變量保存的。針對本例,矩陣轉化成符號矩陣后以最接近原值的有理數形式或者函數形式表示。
1.2.3 特殊矩陣的生成
(1)全零陣
函數 zeros
格式 B = zeros(n) %生成n×n全零陣
B = zeros(m,n) %生成m×n全零陣
B = zeros([m n]) %生成m×n全零陣
B = zeros(d1,d2,d3…) %生成d1×d2×d3×…全零陣或數組
B = zeros([d1 d2 d3…]) %生成d1×d2×d3…全零陣或數組
B = zeros(size(A)) %生成與矩陣_A_大小相同的全零陣
(2)單位陣
函數 eye
格式 Y = eye(n) %生成n×n單位陣
Y = eye(m,n) %生成m×n單位陣
Y = eye(size(A)) %生成與矩陣A大小相同的單位陣
(3)全1陣
函數 ones
格式 Y = ones(n) %生成n×n全1陣
Y = ones(m,n) %生成m×n全1陣
Y = ones([m n]) %生成m×n全1陣
Y = ones(d1,d2,d3…) %生成d1×d2×d3…全1陣或數組
Y = ones([d1 d2 d3…]) %生成d1×d2×d3…全1陣或數組
Y = ones(size(A)) %生成與矩陣_A_大小相同的全1陣
(4)均勻分布隨機矩陣
函數 rand
格式 Y = rand(n) %生成n×n隨機矩陣,其元素在(0,1)內
Y = rand(m,n) %生成m×n隨機矩陣
Y = rand([m n]) %生成m×n隨機矩陣
Y = rand(m,n,p,…) %生成m×n×p×…隨機矩陣或數組
Y = rand([m n p…]) %生成m×n×p×…隨機矩陣或數組
Y = rand(size(A)) %生成與矩陣A大小相同的隨機矩陣
rand %無變量輸入時只產生一個隨機數
s = rand('state') %產生包括均勻發生器當前狀態的35個元素的向量
rand('state', s) %使狀態重置為s
rand('state', 0) %重置發生器到初始狀態
rand('state', j) %對整數j重置發生器到第j個狀態
rand('state', sum (100*clock)) %每次重置到不同狀態
(5)正態分布隨機矩陣
函數 randn
格式 Y = randn(n) %生成n×n正態分布隨機矩陣
Y = randn(m,n) %生成_m×n正態分布隨機矩陣
Y = randn([m n]) %生成m×n正態分布隨機矩陣
Y = randn(m,n,p,…) %生成m×n×p×…正態分布隨機矩陣或數組
Y = randn([m n p…]) %生成m×n×p×…正態分布隨機矩陣或數組
Y = randn(size(A)) %生成與矩陣A大小相同的正態分布隨機矩陣
randn %無變量輸入時只產生一個正態分布隨機數
s = randn('state') %產生包括正態發生器當前狀態的2個元素的向量
s = randn('state', s) %重置狀態為s
s = randn('state', 0) %重置發生器為初始狀態
s = randn('state', j) %對于整數j重置狀態到第j個狀態
s = randn('state', sum(100*clock)) %每次重置到不同狀態
(6)產生隨機排列
函數 randperm
格式 p = randperm(n) %產生1~n之間整數的隨機排列
(7)產生線性等分向量函數linspace
格式 y = linspace(a,b) %在(a,b)上產生100個線性等分點
y = linspace(a,b,n) %在(a,b)上產生n個線性等分點
(8)產生對數等分向量
函數 logspace
格式 y = logspace(a,b) %在(10a,10b)之間產生50個對數等分向量
y = logspace(a,b,n) %在(10a,10b)上產生_n_個對數等分向量
y = logspace(a,pi) %在(10a,π)上產生50個對數等分向量
(9)計算矩陣中元素個數
函數 numel
格式 n = numel(a) %返回矩陣A中元素的個數
(10)產生以輸入元素為對角線元素的矩陣
函數 blkdiag
格式 out = blkdiag(a,b,c,d,…) %產生以a,b,c,d,…為對角線元素的矩陣
(11)友矩陣
函數 compan
格式 A = compan(u) %u為多項式系統向量,A為友矩陣,A的第1行元素為-u(2:n)/u(1),其中u(2:n)為u的第2到n個元素,A的特征值就是多項式的特征根
(12)Hadamard矩陣
函數 hadamard
格式 H = hadamard(n) %返回n階Hadamard矩陣
(13)hankel方陣
函數 hankel
格式 H = hankel(c) %第1列元素為c,反三角以下元素為0
H = hankel(c,r) %第1列元素為c,最后一行元素為r。如果c的最后一個元素與r的第一個元素不同,交叉位置的元素取為c的最后一個元素
(14)Hilbert矩陣
函數 hilb
格式 H = hilb(n) %返回n階Hilbert矩陣,其元素為H(i,j)=1/(i+j-1)。
(15)逆Hilbert矩陣
函數 invhilb
格式 H = invhilb(n) %產生n階逆Hilbert矩陣
(16)Magic(魔方)矩陣
函數 magic
格式 M = magic(n) %產生n階魔方矩陣
(17)Pascal矩陣
函數 pascal
格式 A = pascal(n) %產生n階Pascal矩陣。它是對稱正定矩陣,元素由Pascal三角組成。它的逆矩陣的所有元素都是整數
A = pascal(n,1) %返回由下三角的Cholesky系數組成的Pascal矩陣
A = pascal(n,2) %返回pascal(n,1)的轉置和交換的形式
(18)托普利茲矩陣
函數 toeplitz
格式 T = toeplitz(c,r) %生成一個非對稱的托普利茲矩陣,將c作為第1列,將r作為第1 行,其余元素與左上角相鄰元素相等
T = toeplitz(r) %用向量r生成一個對稱的托普利茲矩陣
(19)Wilkinson特征值測試陣
函數 wilkinson
格式 W = wilkinson(n) %返回n階Wilkinson特征值測試陣
總結
以上是生活随笔為你收集整理的matlab logspace 虚数,《MATLAB智能算法超级学习手册》一一1.2 矩阵的表示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Document.getElement方
- 下一篇: 如何读取或转换PCD点云文件