- Matlab 教程
- MATLAB - 首頁
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 環境設定
- MATLAB - 編輯器
- MATLAB - 線上
- MATLAB - 工作區
- MATLAB - 語法
- MATLAB - 變數
- MATLAB - 命令
- MATLAB - 資料型別
- MATLAB - 運算子
- MATLAB - 日期和時間
- MATLAB - 數字
- MATLAB - 隨機數
- MATLAB - 字串和字元
- MATLAB - 文字格式化
- MATLAB - 時間表
- MATLAB - M 檔案
- MATLAB - 冒號表示法
- MATLAB - 資料匯入
- MATLAB - 資料輸出
- MATLAB - 資料歸一化
- MATLAB - 預定義變數
- MATLAB - 決策
- MATLAB - 決策
- MATLAB - If End 語句
- MATLAB - If Else 語句
- MATLAB - If…Elseif Else 語句
- MATLAB - 巢狀 If 語句
- MATLAB - Switch 語句
- MATLAB - 巢狀 Switch
- MATLAB - 迴圈
- MATLAB - 迴圈
- MATLAB - For 迴圈
- MATLAB - While 迴圈
- MATLAB - 巢狀迴圈
- MATLAB - Break 語句
- MATLAB - Continue 語句
- MATLAB - End 語句
- MATLAB - 陣列
- MATLAB - 陣列
- MATLAB - 向量
- MATLAB - 轉置運算子
- MATLAB - 陣列索引
- MATLAB - 多維陣列
- MATLAB - 相容陣列
- MATLAB - 分類陣列
- MATLAB - 元胞陣列
- MATLAB - 矩陣
- MATLAB - 稀疏矩陣
- MATLAB - 表格
- MATLAB - 結構體
- MATLAB - 陣列乘法
- MATLAB - 陣列除法
- MATLAB - 陣列函式
- MATLAB - 函式
- MATLAB - 函式
- MATLAB - 函式引數
- MATLAB - 匿名函式
- MATLAB - 巢狀函式
- MATLAB - 返回語句
- MATLAB - 空函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波器函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - 對映函式
- MATLAB - 平均值函式
- MATLAB - 結束函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - Try...Catch 語句
- MATLAB - 除錯
- MATLAB - 繪圖
- MATLAB - 繪圖
- MATLAB - 繪製陣列
- MATLAB - 繪製向量
- MATLAB - 條形圖
- MATLAB - 直方圖
- MATLAB - 圖形
- MATLAB - 2D 線性圖
- MATLAB - 3D 圖形
- MATLAB - 格式化圖形
- MATLAB - 對數座標軸圖形
- MATLAB - 繪製誤差條
- MATLAB - 繪製 3D 等值線
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 2D 陣列插值
- MATLAB - 3D 陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯運算元濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 2D 逆餘弦變換
- MATLAB - 在座標軸上新增圖例
- MATLAB - 面向物件
- MATLAB - 面向物件程式設計
- MATLAB - 類和物件
- MATLAB - 函式過載
- MATLAB - 運算子過載
- MATLAB - 使用者定義類
- MATLAB - 複製物件
- MATLAB - 代數
- MATLAB - 線性代數
- MATLAB - 高斯消元法
- MATLAB - 高斯-約旦消元法
- MATLAB - 簡化行階梯形式
- MATLAB - 特徵值和特徵向量
- MATLAB - 積分
- MATLAB - 積分
- MATLAB - 二重積分
- MATLAB - 梯形法則
- MATLAB - 辛普森法則
- MATLAB - 其他
- MATLAB - 微積分
- MATLAB - 微分
- MATLAB - 矩陣的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用資源
- MATLAB - 快速指南
- MATLAB - 有用資源
- MATLAB - 討論
MATLAB - 運算子
運算子是一個符號,它告訴編譯器執行特定的數學或邏輯操作。MATLAB 主要用於對整個矩陣和陣列進行操作。因此,MATLAB 中的運算子同時作用於標量和非標量資料。MATLAB 允許以下型別的基本運算:
- 算術運算子
- 關係運算符
- 邏輯運算子
- 按位運算
- 集合運算
算術運算子
MATLAB 允許兩種不同的算術運算:
- 矩陣算術運算
- 陣列算術運算
矩陣算術運算與線性代數中定義的相同。陣列運算對一維和多維陣列都執行逐元素運算。
矩陣運算子和陣列運算子透過句點 (.) 符號區分。但是,由於加法和減法運算對於矩陣和陣列都是相同的,因此兩種情況下的運算子都相同。下表簡要說明了運算子:
| 序號 | 運算子和描述 |
|---|---|
| 1 | + 加法或一元加。A+B 將變數 A 和 B 中儲存的值相加。A 和 B 必須具有相同的大小,除非其中一個是標量。標量可以加到任何大小的矩陣上。 |
| 2 | - 減法或一元減。A-B 從 A 中減去 B 的值。A 和 B 必須具有相同的大小,除非其中一個是標量。標量可以從任何大小的矩陣中減去。 |
| 3 | * 矩陣乘法。C = A*B 是矩陣 A 和 B 的線性代數乘積。更準確地說,
對於非標量 A 和 B,A 的列數必須等於 B 的行數。標量可以乘以任何大小的矩陣。 |
| 4 | .* 陣列乘法。A.*B 是陣列 A 和 B 的逐元素乘積。A 和 B 必須具有相同的大小,除非其中一個是標量。 |
| 5 | / 斜槓或矩陣右除。B/A 幾乎與 B*inv(A) 相同。更準確地說,B/A = (A'\B')'。 |
| 6 | ./ 陣列右除。A./B 是一個矩陣,其元素為 A(i,j)/B(i,j)。A 和 B 必須具有相同的大小,除非其中一個是標量。 |
| 7 | \ 反斜槓或矩陣左除。如果 A 是一個方陣,則 A\B 幾乎與 inv(A)*B 相同,只是計算方式不同。如果 A 是一個 n×n 矩陣,而 B 是一個具有 n 個分量的列向量,或者是一個具有幾個此類列的矩陣,則 X = A\B 是方程 AX = B 的解。如果 A 的比例不好或接近奇異,則會顯示警告訊息。 |
| 8 | .\ 陣列左除。A.\B 是一個矩陣,其元素為 B(i,j)/A(i,j)。A 和 B 必須具有相同的大小,除非其中一個是標量。 |
| 9 | ^ 矩陣冪。X^p 是 X 的 p 次冪,如果 p 是標量。如果 p 是整數,則冪透過重複平方計算。如果整數為負,則先對 X 求逆。對於 p 的其他值,計算涉及特徵值和特徵向量,使得如果 [V,D] = eig(X),則 X^p = V*D.^p/V。 |
| 10 | .^ 陣列冪。A.^B 是一個矩陣,其元素為 A(i,j) 的 B(i,j) 次冪。A 和 B 必須具有相同的大小,除非其中一個是標量。 |
| 11 | ' 矩陣轉置。A' 是 A 的線性代數轉置。對於複數矩陣,這是複共軛轉置。 |
| 12 | .' 陣列轉置。A.' 是 A 的陣列轉置。對於複數矩陣,這不會涉及共軛。 |
關係運算符
關係運算符也可以作用於標量和非標量資料。陣列的關係運算符在兩個陣列之間執行逐元素比較,並返回相同大小的邏輯陣列,其中關係為真的元素設定為邏輯 1(真),關係為假的元素設定為邏輯 0(假)。
下表顯示了 MATLAB 中可用的關係運算符:
| 序號 | 運算子和描述 |
|---|---|
| 1 | < 小於 |
| 2 | <= 小於或等於 |
| 3 | > 大於 |
| 4 | >= 大於或等於 |
| 5 | == 等於 |
| 6 | ~= 不等於 |
邏輯運算子
MATLAB 提供兩種型別的邏輯運算子和函式:
逐元素 - 這些運算子對邏輯陣列的對應元素進行運算。
短路 - 這些運算子對標量和邏輯表示式進行運算。
逐元素邏輯運算子對邏輯陣列逐元素進行運算。符號 &、| 和 ~ 分別是邏輯陣列運算子 AND、OR 和 NOT。
短路邏輯運算子允許對邏輯運算進行短路。符號 && 和 || 分別是邏輯短路運算子 AND 和 OR。
按位運算
按位運算子對位進行運算,並執行逐位運算。&、| 和 ^ 的真值表如下:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
假設 A = 60;B = 13;現在以二進位制格式,它們將如下所示:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
MATLAB 提供了各種用於按位運算的函式,例如“按位與”、“按位或”和“按位非”運算、移位運算等。
下表顯示了常用的按位運算:
| 函式 | 用途 |
|---|---|
| bitand(a, b) | 整數 a 和 b 的按位與 |
| bitcmp(a) | a 的按位補碼 |
| bitget(a,pos) | 獲取整數陣列 a 中指定位置 pos 處的位 |
| bitor(a, b) | 整數 a 和 b 的按位或 |
| bitset(a, pos) | 設定 a 的特定位置 pos 處的位 |
| bitshift(a, k) | 返回 a 向左移動 k 位的結果,相當於乘以 2k。k 的負值對應於向右移動位或除以 2|k| 並四捨五入到最接近負無窮大的整數。任何溢位位都會被截斷。 |
| bitxor(a, b) | 整數 a 和 b 的按位異或 |
| swapbytes | 交換位元組順序 |
集合運算
MATLAB 提供了各種用於集合運算的函式,例如並集、交集和測試集合成員資格等。
下表顯示了一些常用的集合運算:
| 序號 | 函式和描述 |
|---|---|
| 1 | intersect(A,B) 兩個陣列的集合交集;返回 A 和 B 共有的值。返回的值按排序順序排列。 |
| 2 | intersect(A,B,'rows') 將 A 的每一行和 B 的每一行都視為單個實體,並返回 A 和 B 共有的行。返回矩陣的行按排序順序排列。 |
| 3 | ismember(A,B) 返回一個與 A 大小相同的陣列,其中 A 的元素在 B 中找到的位置為 1(真)。在其他位置,它返回 0(假)。 |
| 4 | ismember(A,B,'rows') 將 A 的每一行和 B 的每一行都視為單個實體,並返回一個向量,其中矩陣 A 的行也是 B 的行的位置為 1(真)。在其他位置,它返回 0(假)。 |
| 5 | issorted(A) 如果陣列 A 中的元素按排序順序排列,則返回邏輯 1(真),否則返回邏輯 0(假)。輸入 A 可以是向量或 N×1 或 1×N 的字串單元格陣列。A 被認為是排序的,如果 A 和 sort(A) 的輸出相等。 |
| 6 | issorted(A, 'rows') 如果二維矩陣 A 的行按排序順序排列,則返回邏輯 1(真),否則返回邏輯 0(假)。矩陣 A 被認為是排序的,如果 A 和 sortrows(A) 的輸出相等。 |
| 7 | setdiff(A,B) 兩個陣列的集合差;返回 A 中不在 B 中的值。返回陣列中的值按排序順序排列。 |
| 8 | setdiff(A,B,'rows') 將 A 和 B 的每一行都視為單個實體,並返回 A 中不在 B 中的行。返回矩陣的行按排序順序排列。 'rows' 選項不支援單元格陣列。 |
| 9 | setxor 兩個陣列的集合異或 |
| 10 | union 兩個陣列的集合並 |
| 11 | unique 陣列中的唯一值 |
