MATLAB 基礎語法速查表 (Basic Syntax Cheat Sheet)

這份筆記整理了 MATLAB 最核心、最常用的基本語法。寫 MATLAB 腳本 (.m 檔) 時,隨時可以拿出來參考。


1. 程式起手式 (環境清理)

每次執行新腳本前,最好先清空舊的資料和視窗,避免被上一次的變數干擾。這三行通常會放在程式的最開頭:

clc;        % 清空指令視窗 (Command Window) 的文字
clear;      % 清空工作區 (Workspace) 的所有變數
close all;  % 關閉所有之前畫的圖片視窗 (Figures)

2. 常用運算子 (Operators)

MATLAB 的運算子主要分為三大類:算術、關係(比較)與邏輯運算子。

(1) 算術運算子 (Arithmetic Operators)

前面提過矩陣運算的「點運算」,這裡做個總整理:

(2) 關係/比較運算子 (Relational Operators)

用來比較數值大小,回傳結果為邏輯值 1 (True/真) 或 0 (False/假)。 ⚠️ 特別注意:MATLAB 的「不等於」是波浪號 ~=,不是 != 喔!

% 關係運算子範例
a = 5;
b = 5;
c = 10;

result1 = (a == b);   % 結果為 1 (True)
result2 = (a ~= c);   % 結果為 1 (True)

(3) 邏輯運算子 (Logical Operators)

用來組合多個條件。MATLAB 的邏輯運算子有分「純量(單一數字)專用」和「陣列專用」兩種。

A. 雙符號(用於純量/單一變數的 if / while 條件判斷,具有短路特性,執行較快):

B. 單符號(用於陣列/矩陣的元素對元素邏輯判斷):

% 邏輯運算子範例
age = 25;
has_license = 1; % 1 代表 True

% 使用 && 判斷兩個條件是否同時成立
if (age >= 18) && (has_license == 1)
    disp('可以合法開車!');
end

% 邏輯 NOT 範例
is_raining = 0; % 0 代表 False
if ~is_raining
    disp('沒下雨,可以出門!');
end

3. 變數與註解

% 這是一行註解 (MATLAB 的註解是用百分比符號)

a = 10;     % 宣告變數 (句尾加上分號 `;` 代表不要在指令視窗印出結果)
b = 5       % 句尾「沒有」分號,執行時會在螢幕上印出 b = 5

% 字串 (字元陣列)
myText = 'Hello World'; 

4. 向量 (Vector) 與矩陣 (Matrix) 建立

這是在 MATLAB 中最常做的事情:建立一維或二維的數據。

% 1. 手動輸入建立
V_row = [1, 2, 3, 4];       % 橫列向量 (Row Vector),用逗號或空格隔開
V_col = [1; 2; 3; 4];       % 直行向量 (Column Vector),用分號換行
M = [1, 2; 3, 4];           % 2x2 矩陣 (第一列1,2;第二列3,4)

% 2. 自動生成等差數列 (格式: 起點 : 步長 : 終點)
t = 0 : 0.1 : 10;           % 建立一個從 0 開始,每次加 0.1,到 10 結束的陣列 (常用於時間軸)
nums = 1 : 5;               % 步長若省略,預設為 1 (即 1, 2, 3, 4, 5)

% 3. 常用內建矩陣
Z = zeros(3, 3);            % 建立 3x3 的全零矩陣
O = ones(2, 4);             % 建立 2x4 的全一矩陣

5. 矩陣索引 (抓取特定資料)

MATLAB 的索引是 從 1 開始 的(這跟 C, Python 從 0 開始不一樣喔!)。

A = [10, 20, 30, 40, 50];

x = A(1);       % 抓取第 1 個元素 (結果為 10)
y = A(3);       % 抓取第 3 個元素 (結果為 30)
z = A(2:4);     % 抓取第 2 到第 4 個元素 (結果為 [20, 30, 40])
last = A(end);  % 抓取最後一個元素 (結果為 50,end 是超級好用的關鍵字)

6. 數學運算:矩陣乘法 vs. 元素對元素 (超級重要 ⚠️)

這是初學者最常報錯的地方!在做兩個陣列相乘除時,一定要分清楚你是要做「線性代數的矩陣相乘」還是「對應位置的數字各自相乘」。

A = [1, 2, 3];
B = [4, 5, 6];

% 【矩陣乘法】 (符合線性代數規則)
% C = A * B;    % 這樣寫會報錯!因為 1x3 不能乘 1x3
C = A * B';     % 正確:1x3 乘 3x1 (B' 代表轉置矩陣)

% 【元素對元素運算】 (點運算 Element-wise)
% 在乘號 `*`、除號 `/`、次方 `^` 前面加上一個「點 `.`」
D = A .* B;     % 結果為 [1*4, 2*5, 3*6] = [4, 10, 18]
E = A .^ 2;     % 把 A 裡面的每個數字各自平方 = [1, 4, 9]

7. 條件判斷 (if / else)

score = 85;

if score >= 90
    disp('等級:A');       % disp() 用來在螢幕上印出文字
elseif score >= 80
    disp('等級:B');
else
    disp('等級:C');
end

8. 迴圈 (for / while)

% 【for 迴圈】 (已知要跑幾次時使用)
for i = 1:5
    % 將會執行 5 次,i 會依序變成 1, 2, 3, 4, 5
    disp(['現在跑到第 ', num2str(i), ' 圈']);
end

% 【while 迴圈】 (達到某條件才停止時使用)
count = 1;
while count < 4
    disp(count);
    count = count + 1;
end

9. 實用內建查詢函數

length(A)   % 查詢一維陣列的長度 (裡面有幾個數字)
size(M)     % 查詢矩陣的維度 (回傳 幾列 x 幾欄)
max(A)      % 找出陣列中的最大值
min(A)      % 找出陣列中的最小值
mean(A)     % 計算平均值

10. 自訂函數 (Custom Functions)

自訂函數就像是你自己發明了一台小機器:你丟東西進去(輸入參數 Input),它幫你算完後把結果吐出來(輸出結果 Output)。

⚠️ 核心規則:檔名必須等於函數名!

在 MATLAB 中建立函數時,通常會額外開一個新的 .m 檔案。這個檔案的存檔名稱,必須跟你的函數名稱一模一樣!

(1) 函數的基本語法結構

假設我們要寫一個函數,輸入兩個數字,它會同時回傳這兩個數字的「相加」與「相減」結果。

% 1. 建立一個新檔案,存檔命名為:my_math_calc.m

function [out_add, out_sub] = my_math_calc(in1, in2)
    % 這裡可以寫函數的說明。當你在指令視窗輸入 help my_math_calc 時,這段文字會顯示出來。
    
    % --- 在這裡實作你的計算邏輯 ---
    out_add = in1 + in2;   % 算出相加結果,存入第一個輸出變數
    out_sub = in1 - in2;   % 算出相減結果,存入第二個輸出變數
    
end % 標示函數結束 (雖然在單一檔案中可省略,但加上是個好習慣)

(2) 如何呼叫 (使用) 自訂函數

回到你主要在跑模擬的主程式(例如 main_script.m)。只要這個主程式跟剛剛寫好的函數檔案放在同一個資料夾,你就可以直接像使用內建函數一樣呼叫它:

% --- 在 main_script.m 中呼叫自訂函數 ---

a = 10;
b = 3;

% 因為函數有兩個輸出,我們必須用中括號 [ ] 來接住這兩個結果
[result_plus, result_minus] = my_math_calc(a, b);

disp(['相加的結果是:', num2str(result_plus)]);
disp(['相減的結果是:', num2str(result_minus)]);

💡 進階變化型 (根據輸入/輸出數量不同)


Revision #2
Created 2026-04-01 02:06:18 UTC by TaipeiTechRacing
Updated 2026-04-06 16:39:15 UTC