最近,筆者聽到一些身邊非資訊相關科系的朋友,被系上安排的 Matlab 課程折磨得苦不堪言,還有人是專題研究要使用但無從上手,相信有不少人也遇到了相似的情況,所以筆者打算寫一系列的教學文章來幫讀者們建立使用 Matlab 的基礎,包刮變數、陣列、流程控制 (if, else, loop)、function、M 檔案等的使用,期待大家不再聞 Matlab 色變

在正文開始之前,先幫大家做個心理建設, Matlab 不是要大家記住所有的語法才能使用,掌握了基礎後,遇到問題上網google下別人的做法,或是查官方文件都是非常常見的過程,就算對資工的學生來說這也是必經的過程,再來,雖然 Matlab 也是一門程式語言,但是它的難度相較於 C/C++、Java、Python 這些大家或多或少聽過的語言,其實是低很多的,同理,要上手所要花的時間也會少很多,所以不必感到太多壓力,願意花時間練習的話是一定能學會的

※小提醒:以下 code 的部分看似有些排版混亂,實際上為 Matlab 實際會出的顯示效果。




0. 介面介紹


  1. 區域1 為工作目錄,要使用的外部檔案(圖片或是.m檔等)務必記得放在此目錄中
  2. 區域2 為 Command Window 供使用者輸入指令,輸入 clc 可以清空 Command Window
  3. 區域3 為Workspace,使用者能查看目前為止創建的變數值,在 Command Window 中輸入 clear 可以刪除所有變數


1. 變數與其的基本運算
在 Matlab 中加 (+)、減 (-)、乘 (*)、除 (/) --- 分別為這些運算符號,讀者可以在 command window 中嘗試看看(下面的code會一直看到%這個符號,放在%後的文字不會被Matlab視作code,而是直接被忽略,所以可以拿來註解你的code做了哪些功能)
% 運算同樣遵循先乘除後加減

>> 2 + 5 * 3 / 6

ans =

    4.5000
而變數則可以用來儲存運算結果或是拿來運算,至於指定變數值則是透過 "=" 來完成,注意規則是等號右側的值會複製給等號左側的變數,請看以下範例 :
%創建一變數名為 x,並指定其值為 6
>>x = 6

x =

     6


% 創建一變數名為 y,並指定其值為2 (若是不想每次的指令都在下行印出運算結果,
可以加分號阻止)
>> y = 2;

%等號右側的值會複製給等號左側的變數,因此 x 的值會被 y 的值覆蓋變為2
>> x  =  y
x =

     2

變數的命名要遵循以下規則,否則執行時會出錯 :

  1.  需由字母開頭,並且大小寫的不同會被視為不同的變數
  2.  變數名中不能含有空白字元


並且,變數也不只能存數字而已,也能存放句子 (字串) 或是單一字元等數字外的東西,我會在以後的文章詳加說明

2. 陣列(在 Matlab 中也當作向量)
當你需要同時操作大量變數時,一一建立每個變數並指定其值無疑是非常沒效率的,這時,我們就能夠使用陣列來做替換,陣列這個結構能夠同時儲存大量數值,要存取其中特定的值的話,需透過該數值的編號 (index) 來取用,請見以下範例 :
% 創建一名為 v 的陣列
>> v = [1 0 6 2 8]

v =

     1     0     6     2     8

% 透過 ( ) 中放入編號 (index),來使用其中的數值,編號由左至右依序為1, 2, 3, 4, 5
%假設我們要存取 v 中的 6 這數值語法如下
>> v(3)

ans =


     6
%因為 6 是由左而右數來第3個數字,因此其編號(index)為3

3. 使用 function
所謂的 function,其實就是一個可拿來重複運用的功能,你可以把它想像成數學上的函數,你給輸入值,function 會運算後將結果傳出來,以 min function 舉例 (min 的詳細使用方法),它能夠找出陣列中最小的數字


 >> v = [1 0 6 2 8];
>> min(v)


ans =


     0


%從上面的code能看出,使用function的方法,是在function名字後加上括號,
並在括號中放入該 function 的 input(argument) 即可,當然 function 運算出的
結果是能被變數儲存的


>> minValue = min(v)


minValue =


     0


%當然 funtion 除了數學的運算,也能做其它是,例如繪圖 : 
>> plot(v)


現在知道如何使用function後,我們要怎麼知道有哪些 function 可用呢,答案就是查官方文件,所以假如你現在要寫一個沒用過的功能,首先就是去Google找有沒有人寫過類似的功能,有當然最好,看他是用了Matlab的哪個function,去官方文件查該  function 的詳細用法,查不到的話,才會自己寫一個(怎麼樣自製 function,在以後的教學文章會說明),最後,再傳達一個觀念,function 會根據 input(argument) 的數量、型態等,產生不同作用,所以使用時一定要看仔細官方文件是怎麼寫的,那麼這次的教學就到這邊,下一篇我會教大家流程控制 (if, else, loop...),這次教學有不清楚的地方,歡迎留言多多交流。



Source : Photo by Jukan Tateisi on Unsplash

Post a Comment

較新的 較舊