- 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 語句
- 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 - return 語句
- MATLAB - 無返回值函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波器函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - map 函式
- MATLAB - mean 函式
- MATLAB - end 函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - try…catch 語句
- 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 - 逆傅立葉變換
- 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 - GNU Octave
- MATLAB - Simulink
- 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 | ^ 矩陣冪。如果 p 是標量,則 X^p 是 X 的 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 的陣列轉置。對於複數矩陣,這不會涉及共軛。 |
示例
以下示例演示了對標量資料使用算術運算子。使用以下程式碼建立一個指令碼檔案:
a = 10; b = 20; c = a + b d = a - b e = a * b f = a / b g = a \ b x = 7; y = 3; z = x ^ y
執行檔案時,會產生以下結果:
c = 30 d = -10 e = 200 f = 0.50000 g = 2 z = 343
算術運算函式
除了上述算術運算子之外,MATLAB 還提供以下用於類似目的的命令/函式:
| 序號 | 函式和描述 |
|---|---|
| 1 | uplus(a) 一元加;增加 a 的量 |
| 2 | plus (a,b) 加法;返回 a + b |
| 3 | uminus(a) 一元減;減少 a 的量 |
| 4 | minus(a, b) 減法;返回 a - b |
| 5 | times(a, b) 陣列乘法;返回 a.*b |
| 6 | mtimes(a, b) 矩陣乘法;返回 a*b |
| 7 | rdivide(a, b) 陣列右除;返回 a ./ b |
| 8 | ldivide(a, b) 陣列左除;返回 a.\ b |
| 9 | mrdivide(A, B) 求解線性方程組 *xA = B* 的 *x* |
| 10 | mldivide(A, B) 求解線性方程組 *Ax = B* 的 *x* |
| 11 | power(a, b) 陣列冪;返回 a.^b |
| 12 | mpower(a, b) 矩陣冪;返回 a ^ b |
| 13 | cumprod(A) 累積乘積;返回與陣列 A 大小相同的陣列,包含累積乘積。
|
| 14 | cumprod(A, dim) 沿維度 *dim* 返回累積乘積。 |
| 15 | cumsum(A) 累積和;返回包含累積和的陣列 A。
|
| 16 | cumsum(A, dim) 沿維度 *dim* 返回元素的累積和。 |
| 17 | diff(X) 差分和近似導數;計算 X 相鄰元素之間的差分。
|
| 18 | diff(X,n) 遞迴應用 diff n 次,得到 n 次差分。 |
| 19 | diff(X,n,dim) 沿由標量 dim 指定的維度計算的 n 次差分函式。如果階數 n 等於或超過維度 dim 的長度,則 diff 返回一個空陣列。 |
| 20 | prod(A) 陣列元素的乘積;返回 A 的陣列元素的乘積。
如果輸入 A 為單精度,則 prod 函式計算並返回 B 為單精度。對於所有其他數值和邏輯資料型別,prod 計算並返回 B 為雙精度。 |
| 21 | prod(A,dim) 返回沿維度 dim 的乘積。例如,如果 A 是一個矩陣,prod(A,2) 是一個列向量,包含每一行的乘積。 |
| 22 | prod(___,datatype) 進行乘法運算並返回指定資料型別 datatype 的陣列。 |
| 23 | sum(A)
|
| 24 | sum(A,dim) 沿由標量 dim 指定的 A 維度求和。 |
| 25 | sum(..., 'double') sum(..., dim,'double') 使用雙精度執行加法運算,並返回雙精度型別的答案,即使 A 的資料型別為單精度或整數型別。對於整數型別,這是預設值。 |
| 26 | sum(..., 'native') sum(..., dim,'native') 使用 A 的原生資料型別執行加法運算,並返回相同資料型別的答案。對於單精度和雙精度,這是預設值。 |
| 27 | ceil(A) 向正無窮大舍入;將 A 的元素舍入到大於或等於 A 的最接近的整數。 |
| 28 | fix(A) 向零舍入 |
| 29 | floor(A) 向負無窮大舍入;將 A 的元素舍入到小於或等於 A 的最接近的整數。 |
| 30 | idivide(a, b) idivide(a, b,'fix') 帶舍入選項的整數除法;與 a./b 相同,只是分數商向零舍入到最接近的整數。 |
| 31 | idivide(a, b, 'round') 分數商舍入到最接近的整數。 |
| 32 | idivide(A, B, 'floor') 分數商向負無窮大舍入到最接近的整數。 |
| 33 | idivide(A, B, 'ceil') 分數商向正無窮大舍入到最接近的整數。 |
| 34 | mod (X,Y) 除法後的模;返回 X - n.*Y,其中 n = floor(X./Y)。如果 Y 不是整數,並且商 X./Y 在舍入誤差範圍內為整數,則 n 為該整數。輸入 X 和 Y 必須是相同大小的實數陣列,或實數標量(前提是 Y ~=0)。 請注意 −
|
| 35 | rem (X,Y) 除法後的餘數;返回 X - n.*Y,其中 n = fix(X./Y)。如果 Y 不是整數,並且商 X./Y 在舍入誤差範圍內為整數,則 n 為該整數。輸入 X 和 Y 必須是相同大小的實數陣列,或實數標量(前提是 Y ~=0)。 請注意 −
|
| 36 | round(X) 舍入到最接近的整數;將 X 的元素舍入到最接近的整數。分數部分為 0.5 的正數舍入到最接近的正整數。分數部分為 -0.5 的負數舍入到最接近的負整數。 |
