1. Schedule
Week | Topic/Event | Notes |
---|---|---|
1 | 簡介 | |
2 | MATLAB作爲計算器與數組矩陣操作 | |
3 | 結構化程序設計與用戶自定義函數 | |
4 | 變量與數據存取 | |
5 | 初階繪圖 | |
6 | 進階繪圖 |
2. MATLAB基礎知識
2.1 MATLAB編程模式
- 命令行(in command window)
- Scripts腳本(.m文件)
2.2 MATLAB作爲計算器
- 運算符:
+ - * /^
- 計算結果,並顯示爲ans
- 優先規則
- 在優先組中從左到右
- Precedence groups are (highest first):
- 方括號
- 冪函數
^
- 乘除
* /
- 加減
+ -
2.2.1 計算練習
2.3 初等數學函數
2.4 嵌入函數
- 函數可以嵌入到其他函數中:
- 許多代碼行可以壓縮成一個命令
2.5 變量
- 變量不需要在賦值之前聲明
- 單個“equal”符號(=)是賦值運算符
>>> LHS = RHS
>>> A = 10
- 變量大小寫有區別 EX: A=10 a=10
- 變數不可以以數字開頭 EX:
2A=10
2.6 特殊變量和常量
- ans
- i, j: complex number 複數
- Inf: >> x = 1/0
- eps: 2.2204e-016 >> x = log(0)
- NaN: not a number >> x = inf/inf
- pi:
>> iskeyword # 返回matlab中所有的關鍵字,共20個
>> iskeyword('while')
ans =
1
>> iskeyword('except')
ans =
0
2.7 MATLAB 調用優先級
從高到低依次是:
- 變量
- 內部函數
- 子函數
- 私有函數
- MEX 文件
- P 文件
- M 文件
>> cos='This string.'; % 本身cos是一個函數,但是在這裏cos爲變量,並將字符串This string.賦值給cos,cos(8)問的是字符串中第8個字符r
>> cos(8)
ans =
r
% 故儘量不要用 關鍵詞 或者 內部函數 當做 變量命
2.8 數值顯示“格式”
- short 3.1416
- long 3.141592653589793
- shortE 3.1416e+00
- longE 3.141592653589793e+00
- bank
- hex
- rat 355/113
>> format long
2.9 命令行終端
- matlab中分號“
;
”表示不顯示運算結果 - 方向鍵上“”可以調出之前的指令
- clc: clear command window display
- clear: remove all variables in the workspace
- who: variables in the workspace
- whos: variable information of the workspace
3. 數組矩陣基礎知識
3.1 數組(Array)(向量和矩陣Vector and Matrix)
-
Row vector:
>> a = [1 2 3 4]
-
Column vector:
>> b = [1;2;3;4]
-
Try:
>> a*b
>> b*a
-
matrix:
>> A = [1 2 3;4 5 6;7 8 9;]
3.2 數組索引
- 選擇矩陣內的某個元素子集
>> A(8) # 矩陣A中第8個元素
ans =
6
>> A([1 3 5]) # 矩陣A中第1 3 5個元素組成新的矩陣
ans =
1 7 5
>> A([1 3; 1 3]) # 矩陣A中第1 3個元素組成新的矩陣,其中;是換行符
ans =
1 7
1 7
>> A(3,2) # 矩陣A中第3行第2列的元素
ans =
8
>> A([1 3],[1 3]) # 前一個方括號表示第1 3行,後一個表示第1 3列,然後組成新的矩陣
ans =
1 3
7 9
3.3 替換元素
- 更改矩陣中的某個元素
>> A
A =
1 2 3
4 5 6
7 8 9
>> A(1,2)=3 % 替換元素命令
A =
1 3 3
4 5 6
7 8 9
>> A(3,:) % 此處 : 表示全部的意思,此命令代表矩陣 A 第三行的全部
ans =
7 8 9
>> A(3,:)=[] % 將 A 的第三行用 空 替代
A =
1 2 3
4 5 6
3.4 冒號操作符
- 想要創建一個長的數組:A = [1 2 3 … 100]
- 語法:j:k [j, j+1, j+2,…, j+m]
j:i:k [j, j+i, j+2i, …, j+m*i]
3.5 數組級聯
>> A=[1 2; 3 4];
>> B=[9 9; 9 9'];
>> F=[A B]
F =
1 2 9 9
3 4 9 9
>> F=[A;B]
F =
1 2
3 4
9 9
9 9
3.6 數組運算
- 數組運算符:+ - * / ^ . ’
- 此處注意
點乘.* 點除./ 點次方.^
,點乘是數組運算,要求參與運算的兩個量必須是維數相同,是對應元素的相乘。
3.7 一些特殊的矩陣
-
eye(n): 矩陣
>> eye(3)
-
zeros(n1,n2): n1*n2的零矩陣
-
ones(n1,n2): n1*n2的 1 矩陣
-
diag( ): 對角線矩陣
>> diag([2 3 4])
3.8 一些矩陣相關函數
>> max(A) # 每一列中最大的數
ans =
7 5 9
>> max(max(A)) # 數組中最大的數
ans =
9
>> min(A) # 每一列中最小的數
ans =
0 0 3
>> sum(A) # 每一列求和
ans =
8 7 18
>> mean(A) # 每一列的平均數
ans =
2.6667 2.3333 6.0000
>> sort(A) # 每一列元素按照從小到大的順序排列
ans =
0 0 3
1 2 6
7 5 9
>> sortrows(A) # 以行爲單位,將第一列元素按照從小到大的順序排列
>> size(A) # A 是幾行幾列數組
ans =
3 3
>> length(A) # 行的長度
ans =
3
>> find(A==5) # 找到某元素在數組中的位置
ans =
5