手邊沒有MATLAB,我就改用scilab,原本我都用scilab當計算機使用,現在研究所要用MATLAB,我就仔細來研究一下scilab的用法。他跟matlab有些差異,我會特別註明。
矩陣
-->A=[1 1 1;1 2 3;1 3 6]
A =
1. 1. 1.
1. 2. 3.
1. 3. 6.
-->B=A(1:2,:)
B =
1. 1. 1.
1. 2. 3.
冒號非常有意思,B矩陣透過使用冒號,可以擷取A矩陣的1到2行,同樣的,如果…
-->B=A(1:3,:)
B =
1. 1. 1.
1. 2. 3.
1. 3. 6.
B矩陣就是擷取了A矩陣的1到3行。
矩陣的基本運算
-->A=[1 1 1;1 2 3;1 3 6];
-->B=[8,1,6;3,5,7;4,9,3];
-->A+B
ans =
9. 2. 7.
4. 7. 10.
5. 12. 9.
-->A-B
ans =
- 7. 0. - 5.
- 2. - 3. - 4.
- 3. - 6. 3.
-->A*B
ans =
15. 15. 16.
26. 38. 29.
41. 70. 45.
-->a=[1 2 3;4 2 6;7 4 9];b=[4;1;2];
-->x=a\b
x =
- 1.5
2.
0.5
scilab提供了兩種除法運算,左除\與右除/,一般來說x=a\b是方程式a*x=b的解,而x=b/a是方程式x*a=b的解。
矩陣與常數的運算
-->A=[1 1 1;1 2 3;1 3 6];
-->A+3
ans =
4. 4. 4.
4. 5. 6.
4. 6. 9.
-->A/2
ans =
0.5 0.5 0.5
0.5 1. 1.5
0.5 1.5 3.
矩陣的乘方運算
-->A=[1 1 1;1 2 3;1 3 6];
-->A^3
ans =
19. 45. 81.
45. 109. 198.
81. 198. 361.
-->A^0.1
ans =
0.9534649 0.1001917 0.0071215
0.1001917 0.9373189 0.1377022
0.0071215 0.1377022 1.1519452
當A為方矩陣,P為大於零的整數時,A^P表示A的P次方,P小於零的整數時表示A^-1的P次方
矩陣的函數計算
det() 行列式
spec() 特徵值 matlab為eig()
inv()或 a^(-1) 逆矩陣
rank() 秩
trace() 跡
norm() 範數
-->A=[1 1 1;1 2 3;1 3 6];
-->det(A)
ans =
1.
-->spec(A)
ans =
0.1270167
1.
7.8729833
轉置A’
另外pinv(A)為A的逆偽
累了…