MATLAB入門之旅

MATLAB入門之旅

課程鏈接:MATLAB入門之旅

本文僅對常用命令做出簡單介紹,更詳細的信息可以在命令行輸入help 命令名doc 命令名查看

(CSDN markdown似乎不支持matlab代碼高亮?)

1. 變量命名

MATLAB 變量命名規則:以字母開頭,並且僅包含字母、數字和下劃線 (_)

2. 常用命令

% 在當前命令行按【向上箭頭】,可以編輯之前輸入過的命令(提高效率)
% 語句末尾加分號,運算結果不會在命令行顯示

clc; % 清除命令行窗口
clear; % 刪除所有工作區變量
clear name1 name2 name3;% 刪除工作區中的變量、腳本、函數或MEX函數name1 name2 name3
clearvars -except A B; % 刪除工作區中的所有變量,但變量A和B除外。

3. 創建等間距向量(冒號運算符和linspace命令)

x = first:distance:last; % distance 是元素間距,可爲負數;注意不要有[]
y = linspace(first,last,number_of_elements);

4. 創建矩陣、隨機數矩陣(rand)、全零矩陣(zeros)

p=[1 2 3;4 5 6] % 普通的2x3矩陣

x = rand(n); % 輸出一個 n×n 的隨機數矩陣
y = rand(n,m); %輸出一個 nxm 的隨機數矩陣
z = randi([iMin,iMax],n,m) % 包含iMin到iMax範圍的隨機整數,行數爲n列數爲m的矩陣

a = zeros(n); % n×n全零矩陣 
b = zeros(n,m); % nxm全零矩陣

5. 保存和加載變量

save datafile data; % 將工作區變量 data 保存到名爲 datafile 的mat文件中
clear;
load datafile; % 從文件 datafile.mat 加載變量。

6. 數組索引

x = A(5,7); % 提取 A 的第5行第7列的值,然後將結果賦給變量 x
y = A(end,3); % 獲取變量 A 的最後一行第三列的值
z = A(end-1,3); % 獲取變量 A 的倒數第二行第三列的值

7. 提取多個元素(:)

x = A(2,:); % 創建一個包含 A 中第 2 行上所有元素的行向量
y = A(:,2); % 創建一個包含 A 中第 2 列上所有元素的列向量
z = A(1:3,:); % 創建一個包含矩陣 A 的第 1 行、第 2 行和第 3 行所有元素的矩陣

a = v(3); % 返回向量 v 的第 3 個元素(當v爲行向量或列向量時)
b = v(3:end); % 返回向量 v 的一個子集,其中包含從第三個到最後一個元素範圍內的所有元素

8. 更改數組中的值

% 通過組合使用[索引與賦值]來修改變量的元素
A(2,5) = 11; % 將 A 第2行第5列的元素值改爲11
v(3)=0.5; % 將 v 第3個元素改爲0.5

9. 數組與矩陣運算

x=[1 2 3];
y1=x+1; % 將1與 x 中所有元素相加,乘除類似
y2=2*x;
y3=x/3;

z=x+y; % 維度相同的數組可以相加

a = [1 2];
b = [3 4];
c = a*b; % 報錯,用於矩陣乘法的維度不正確。請檢查並確保第一個矩陣中的列數與第二個矩陣中的行數匹配
c = a.*b; % 正確,按元素相乘,結果爲[3 8]

10. 一些基本函數

zMax = max(z); % 將數組z中最大元素賦值給zMax
[zMax,izMax] = max(z); % zMax返回數組z的最大值,izMax返回其索引值

zRnd = round(z); % 對z中所有元素四捨五入
zSqrt = sqrt(z); % 對z中所有元素開根號

n = numel(z); % 返回z的元素總數目,例如z是2x3維矩陣,則n=6
zSize = size(z); % 返回z的維度大小
[zr,zc] = size(z); % zr返回z的行數,zc返回z的列數

zfft = fft(z); % 傅里葉變換返回信號的頻率信息,fft函數可以計算向量的離散傅里葉變換

11. 繪製向量圖

plot(x,y); % 可以使用 plot 函數在一張圖上繪製兩個相同長度的向量y=f(x)
plot(x,y,'r--o'); % 以上命令將會繪製一條紅色(r)虛線(--),並使用圓圈(o)作爲標記

hold on; % 要在一張圖上先後繪製兩條線,請使用 hold on 命令保留之前的繪圖,然後添加另一條線,使用 hold off 命令返回到默認行爲
close all; % 關閉所有打開的圖窗窗口

plot(x); % 單獨繪製一個向量時,MATLAB會使用向量值作爲y軸數據,並將x軸數據的範圍設置爲從 1到n(向量中的元素數目)。
plot(x,'LineWidth',5); % 繪製一條線寬爲5的線
plot(sample,v1,'ro','LineWidth',4); % 試着繪製v1(y)軸對sample(x)軸的圖,使用紅色(r)圓圈(o)標記,線寬爲4	

%使用 loglog 函數(用法同 plot 函數),在兩個座標軸上使用對數刻度
loglog(x,y);

title('Plot Title'); % 給圖片添加標題
ylabel('Density (g/cm^3)'); % 爲y軸添加標籤Density (g/cm^3),同理有xlabel
legend('這條曲線是y'); % 添加圖例

12. 邏輯運算和變量

%就像數值運算符一樣,邏輯運算符也會被向量化。

% 關係運算符(例如 `>`、`<`、`==` 和 `~=`)執行兩個值之間的比較。相等或不相等比較的結果爲 1 (true) 或 0 (false)
test = pi>3; % 創建一個邏輯變量,其值爲1(邏輯變量值只能爲0或1)

%可以使用關係運算符將某個向量或矩陣與單個標量值進行比較。結果是與原始數組維度相同的邏輯數組
[5 10 5]>8; % 返回[0 1 0]

% 可以使用關係運算符對兩個數組的對應元素進行比較。這兩個數組的大小必須相同,其比較結果是與這兩個數組具有相同大小的邏輯數組
[5 10 5]>[4 11 6]; % 返回[1 0 0]

% MATLAB 包含 AND (&) 和 OR (|) 等邏輯運算符,可將多個邏輯條件組合在一起
x = (pi > 5) & (0 < 6); % x返回0

% 可以使用邏輯數組作爲數組索引,在這種情況下,MATLAB 會提取索引爲 true 的數組元素
v = v1(v1 > 6); % 提取 v1 中大於 6 的所有元素

% 可以使用邏輯索引在數組中重新賦值。
x(x==999) = 0; % 將數組 x 中等於 999 的所有值都替換爲 0

13. 決策分支

% 在僅滿足某一條件時才執行某個代碼段。可以使用 if 語句完成該操作。每個 if 語句都必須包含一個 if 關鍵字和一個 end 關鍵字,只有滿足條件時,纔會執行 if 和 end 關鍵字之間的代碼
x = rand;
if x > 0.5
    y = 3; %只有 x > 0.5 纔會執行
end

% 通常,可能還希望在所設條件不成立時執行其他代碼。爲此,您可以使用 else 關鍵字,如下所示
x = rand;
if x > 0.5
    y = 3;
else
    y = 4;
end

14. for循環

% 常見的編程任務是重複執行某個代碼段。在 MATLAB 中,您可以使用 for 循環完成該操作。
for i = 1:3
    disp(i)
end
% 請注意,for 循環包含單個 end 關鍵字,與 if 語句類似。
% 運行此代碼時,for 和 end 關鍵字之間的代碼在該示例中將被執行三次,因爲循環計數器 (i) 通過 1:3(1、2 和 3)進行計數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章