---
# System prepended metadata

title: MatLab Notes by L0u15

---

# MatLab Notes by L0u15


## Mathmetics

### Symbol
`i`或`j`虛數
`inf`無窮大
`nan`不是一個數
`pi`圓周率

### Function
`abs(n)`絕對值
`angle(c)`顯示c的徑度向位角，e.g.
```
c = 3 + 4i % 極座標
angle(c) % 0.9273
```
`conj(c)`取共軛複數
`imag(c)`取虛數部分
`real(c)`取實數部分
`isreal`檢測是否為實數
`exp(x)`指數函數，[Website](https://blog.csdn.net/jk_101/article/details/111499745)
`log(x)`自然對數
`log10(x)`以十為底的對數
`log2(x)`以二為底的對數
`sqrt(x)`開根號
`ceil(x)`取大於等於x的最小整數
`floor(x)`小於x的最大整數
`fix(x)`捨去小數
`round(x)`最接近整數
`power(x,n)`輸出x的n次方
`mod(a,b)`a mod b
`gcd(a,b)`取a和b的gcd
`lcm(a,b)`取a和b的lcm
`sum(A)`A之元素總和
`prod(A)`A之元素乘積
`primes(x)`x以下的質數


### Trigonometric Functions
`sin` `cos` `tan` `cot` `csc` `sec`三角函數
`asin` `acos` `atan`反三角函數
`sinh` `cosh` `tanh`雙曲三角函數
`sind` `cosd` `tand`用角度的三角函數
`rad2deg(x)`把弳度換角度e.g.`rad2deg(pi) = 180`

### Vector Functions
`dot(A,B)`A和B向量的內積
`cross(A,B)`A和B的外積

## System Command

### System

`pause(n)`暫停n秒
`waitforbuttonpress`滑鼠按下回傳0，鍵盤按下回傳1

### cmd

`clc`清除cmd內容
`clear`清除變數設定
`clf`清除圖形介面

### I/O

`input()`[Website](https://blog.csdn.net/jk_101/article/details/111942437)
`disp(x)`輸出x數值
`fopen` `fprintf` `fclose` [Website](http://bime-matlab.blogspot.com/2006/10/76-fprintf.html)

## Draw
`line()`[Website](https://ww2.mathworks.cn/help/matlab/ref/line.html)(作圖)
`plot()`[Website](https://blog.csdn.net/zengxiantao1994/article/details/73440934)(作圖)
`figure`[Website](https://blog.csdn.net/qq_30387863/article/details/80301996)(創建新的窗口)
`fill(x,y,'color')`畫實心圖
`grid`on或off開啟或關閉座標方格
`xlabel('text')`text填入x軸名稱
`ylabel('text')`text填入y軸名稱
`gtext('text')`執行到此程式用鼠標選擇text顯示位置
`text(x,y,'')`在(x,y)顯示參數3中的文字
`axis()`傳入`[xbegin,xend,ybegin,yend]`來限制圖表座標軸範圍
:::warning
如果axis()後面的指令範圍超過axis()限制的範圍，axis()會被覆蓋
:::
`title()`圖表標題
`hold`on或off表示在繪畫新的圖時是否保留舊圖

### Others

`beep`[Website](https://www.mathworks.com/help/matlab/ref/beep.html)
`echo` ???

## Style

### Format

`long` 顯示小數點後15位
`short` 顯示小數點後5位
`e` 科學記號
`bank` 銀行計算貨幣用小數點兩位

## Array

### Create Array

`x = first : last`從first到last遞增
`x = first : incrtment : last`從first到last以incrment遞增
`x = linspace(first, last, n)`從first到last共n個元素的陣列
`x = logspace(first, last, n)`從10的first次方到10的last次方共n個元素
`x = [1 2;3 4;5 6]`創造一個3 row 2 column的陣列
`ones(n)`n*n全為1的陣列
`zeros(n)`n*n全為0的陣列
`ones(r,c)`r*c全為1的陣列
`zeros(r,c)`r*c全為0的陣列
`rand(n)`0~1之間n*n的陣列
`rand(r,c)`同邏輯
`randn(n)`包括負數n*n隨機陣列
`diag(a)`將a放在陣列的diagonal上
`diag(a,1)`在上面基礎上左方下方多一行
`diag(a,-2)`在diag(a)基礎丄右方上方加兩行
```
diag(1:3)
1 0 0
0 2 0
0 0 3
diag(1:3,1)
0 1 0 0
0 0 2 0
0 0 0 3
0 0 0 0
diag(1:3,-1)
0 0 0 0
1 0 0 0 
0 2 0 0 
0 0 3 0
```

### Call Array

`x(1:5)`顯示x的前5個元素
`x(6:end)`顯示從6到最後一個元素
`x(1:2:5)`從1到5每次遞增二元素
`triu(x)`顯示x右上部分(包括對角線)，其餘剩0
`tril(x)`顯示左下，同上
`knor(x,y)`將x的全部元素乘上y
`repmat(x,[n,n])`將x陣列複製為n列n行
`magic(n)`回傳n平方的幻方矩陣

### Array Calculations

`A(2,2) = 10`將A陣列(2,2)位置改成10 ****超出陣列範圍陣列擴張其他補0***
`A(:,4) = 10`將A陣列(1:10,4)的元素都改成10 
`C=[A B(:,[2,3])]`將A陣列和B陣列二三行合成C
```
A = [1 2 3;4 5 6;7 8 9]
B = [7 8 9;4 5 6;1 2 3]
C = [A B(;,[2,3])]
  = 1 2 3 8 9
    4 5 6 5 6
    7 8 9 2 3
```
`x=x'`行列互換
`.*` `./` `.^` 為兩陣列專用運算 ****純量與陣列次方運算要用`.^`****

### Array Functions

`sort(x)`從小到大
`sort(A,dim)`對特定維度排序e.g.`sort(A,2)`對column作排列
`sort(A,mode)`mode`ascend`小到大，`descend`大到小
`find(條件)`搜尋一維陣列中符合條件的index
`[i, j] = find(條件)`同上(二維)
`max(x)`找出陣列x中的最大值，多維如`find(x)`
`min(x)`最小值，同上
`flipud(x)`將x上下顛倒
`fliplr(x)`將x左右顛倒
`rot90(x, n)`將x逆時針轉90度n次，默認n為1
`reshape(A,n,m)`將轉換為n列m行的陣列，`n*m`要等於A的元素數量
```
A = 1 2 3
    4 5 6
    7 8 9
reshape(A,1,9) = [1, 4, 7, 2, 5, 8, 3, 6, 9]
```
`length(A)`回傳維度中長度最長e.g.A為4*6的陣列，則length(A)回傳6
`ndims(A)`回傳A的維度e.g.A為二維陣列，則回傳2
`numel(A)`回傳A的元素數目
`eq(A,B)`回傳A,B是否相同(陣列)
`ne(A,B)`A~=B
`ge(A,B)`A>=B
`gt(A,B)`A>B
`le(A,B)`A<=B
`lt(A,B)`A<B


