# Matlab 教學(三)
> 此篇內容為還沒有接觸matlab的初學者所寫,作者也是新手,資料來源於網路,有錯的話還請指正
> [Matlab入門教學(一)](https://hackmd.io/5N3j2unnQA-SS53txfTsXg?view)
> [Matlab入門教學(二)](https://hackmd.io/rJgLH9x6RQqACdkPzGvT5w)
## Random & Loops

```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!出現或消失的時機點要相同

:::info
可使用tic、toc來計算程式執行時間。tic放開頭、toc放結尾
:::

## 如何命名
:::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


* 點選左上角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)