# Matlab 教學(三) > 此篇內容為還沒有接觸matlab的初學者所寫,作者也是新手,資料來源於網路,有錯的話還請指正 > [Matlab入門教學(一)](https://hackmd.io/5N3j2unnQA-SS53txfTsXg?view) > [Matlab入門教學(二)](https://hackmd.io/rJgLH9x6RQqACdkPzGvT5w) ## Random & Loops ![Example_21](https://hackmd.io/_uploads/B1ZeYyS_R.png) ```py= #script % Random and Loops % Section 1 clc,clearvars A = randi(5,1,10) num3 = sum(A == 3) if sum(A == 3) >= 3 disp('wow!') end %% Section 2 clc,clearvars x = 10 ``` * ```randi(x,y,z)```為產生隨機整數的function,x表示最大值,生成y*z矩陣的數量 * ```if ... end```if一定要end結尾,軟體才知道要跑到哪。if後方即為條件,條件成立才執行下列程式碼,不成立則跳過。上方的意思為:若A矩陣內,3出現的次數大於等於3次,則print出wow! * %%為分段的意思,可以將script分段執行,RUN的旁邊有run section,點擊即可分段執行 ```py= # script2 % Random and Loops % If statement clc,clearvars A = randi(5,1,1000000); num3_if = sum(A == 3); if num3_if >= 0.2*length(A) disp('wow!') end % For loop num3_for = 0; for i = 1:length(A) if A(i) == 3 num3_for = num3_for +1; end end if num3_if >= 0.2*length(A) disp('wow!') end ``` * 此段程式碼將比大小的過程分成兩種方法:for或if * ```for```中,後方的值會隨運作次數而改變,此處為從1一直加到length(A)為止,for回圈中的i值會隨著改變。如果A(i)等於3的的話,num3_for就加一 * 上方用if、下方for,因為要達成的目標相同,所以wow!出現或消失的時機點要相同 ![Example_23](https://hackmd.io/_uploads/Bk6WKgBuR.png) :::info 可使用tic、toc來計算程式執行時間。tic放開頭、toc放結尾 ::: ![Example_24](https://hackmd.io/_uploads/SJZrseBu0.png) ## 如何命名 :::danger MATLAB names must start with a letter and contain only letters, numbers, or underscores ::: * 不能用數字做開頭 * 可以用底線或是大小寫來區分變數 ## While Loops ```py= #script % While Loops clc,clearvars z = 100; while z > 75 disp(sqrt(z)) z = z-1; end disp('loop end') ``` * ```while```為通常執行,裡面的code只要條件成立的話就會持續執行,如果條件沒設好,容易造成程式崩潰 ## Custom Function ![Example_25](https://hackmd.io/_uploads/HJ9cFWHuA.png) ![Example_26](https://hackmd.io/_uploads/SJhyoSU_R.png) * 點選左上角New->Function 即可新增想要的function(有點類似C語言中Project的方式)。要記得儲存在相同資料夾中 ```py= #main % While Loops clc,clearvars z = 100; reduce_z(z) **************************** #function function [z_final] = reduce_z(z_initial) z=z_initial; while z > z_initial/2 z = z-1; end z_final = z; end ``` * function可依照不同需求有不同輸入,但要記得輸入變數數目要相同 * 輸出用中括號、輸入用小括號、function名稱則落在後方 --- 參考資料 >1.[MATLAB Crash Course for Beginners](https://youtu.be/7f50sQYjNRA?si=tSxig57n6B59pO08) 進階自修 >[Matlab 簡易教學](https://hackmd.io/@FbUJsF5qTbyirb8qlvu2Fw/Sktejk7hc#:~:text=%E9%97%9C%E6%96%BCMatlab%201%20Matlab%20%E7%B0%A1%E6%98%93%E6%95%99%E5%AD%B8%202%20%E9%97%9C%E6%96%BCMatlab%20%E9%96%8B%E5%A7%8B%E4%BD%BF%E7%94%A8%20%E4%BB%8B%E9%9D%A2%E4%BB%8B%E7%B4%B9,plot%20%28stem%29%20%E5%AE%A2%E8%A3%BD%E5%8C%96%20%E5%85%B6%E4%BB%96%E5%AE%A2%E8%A3%BD%20%E8%AA%AA%E6%98%8E%E6%96%87%E5%AD%97%20%E5%AE%A2%E8%A3%BD%E7%AF%84%E4%BE%8B%204%20%E5%8F%83%E8%80%83%E8%B3%87%E6%96%99)