MATLAB基礎學習筆記(二)

2021-10-17 09:54:06 字數 4586 閱讀 2648

基本步驟:

三種基本結構:順序、選擇、迴圈

程式檔案拓展名:.m吧

指令碼檔案(也叫命令檔案)、函式檔案

指令碼檔案

呼叫: 在命令列視窗輸入檔名

函式檔案

呼叫:直接在命令列視窗呼叫函式,函式檔名與函式名要一致

工作的目錄必須一致

cd命令查詢目前所在資料夾,cd e:\資料夾修改所在資料夾

檔案的建立

順序結構

資料的輸入

a=input(提示資訊,選項);

>>a=input('請輸入變數a的值:');

資料的輸出

disp

>>s='ddd';

>>disp(s)

ddd>>a=[1,2,3;4,5,6;];

>>disp(a)

1 2 3

4 5 6

程式的暫停

pause(延遲秒數)

若要強制中止程式:ctrl+c

單分支if語句

if 條件

​ 語句組

end條件結果為 標量,非零表示條件成立

結果為矩陣,如矩陣非空,且不包含零元素,則條件成立

雙分支if語句

if 條件

​ 語句組1

else

​ 語句組2

end例 輸入乙個整數,若為奇數則輸出其平方根,否則輸出其立方根

x=input('x=');

if rem(x,2)==1 %可寫為 rem(x,2)

y=sqrt(x);

else

y=x^(1/3); %power(x,1/3)

endy

多分支if語句

elseif

c=input('s=');

if c>='a'&&c<='z'

disp(lower(c))

elseif c>='a'&&c<='z'

disp(upper(c)) %小寫字母變為大寫字母

elseif c>='0'&&c<='9'

disp(str2double(c)^2) %輸出對應數的平方

else

disp(c)

end

x=input('x=')

switch fix(x)

case 2

disp(111);

case 2

disp(222);

case

disp(333);

otherwise

disp(444);

end

%輸入乙個英文本母,判斷是否以母音字母開頭

c=input('請輸入乙個單詞:');

switch c(1)

case

disp('以母音字母開頭')

otherwise

disp('以子音字母開頭')

endif findstr(c(1),'aeiouaeiou')>0

disp('以母音字母開頭')

else

disp('以子音字母開頭')

end

格式:

for 迴圈變數=表示式1:表示式2:表示式3

​ 迴圈體語句

end說明

%利用無窮級數展開式求π的近似值

y=0;

g=-1;

n=input('n=');

for i=1:n

g=-g;

y=y+g*1/(2*i-1);

endpai=4*y

%向量求和的方法

n=input('n=');

x=1:2:(2*n-1);

y=(-1).^(2:n+1)./x;

pai=sum(y)*4

利用定積分的近似值

a=0;

b=1;

n=input('n=');

h=(b-a)/n;

x=a:h:b;

f=sqrt(1-x.*x);

s=;for k=1:n;

s1=(f(k)+f(k+1))*h/2;

s=[s,s1];

endpai=4*sum(s)

蒙特卡洛法計算

s=0;

n=input('n=')

for i=1:n

x=rand(1);

y=rand(1);

if x*x+y*y<=1

s=s+1;

endendpai=s/n*4

for 迴圈變數必須是乙個標量,也可以是乙個列向量

格式: while 條件

​ 迴圈體語句

​ end

break和continue語句

迴圈的巢狀

函式檔案的基本結構: function 輸出形參表=函式名(輸入形參表)

​ 注釋說明部分

​ 函式體語句

有多個形參時,用括號分隔,組成形參表。

輸出形參多於乙個時,應該用方括號括起來

函式檔名 函式名

return 語句

呼叫格式

[輸出實參表]=函式名(輸入實參表)

匿名函式

函式控制代碼變數=@(匿名函式輸入引數) 匿名函式表示式

函式控制代碼變數=@函式名

f=@(x,y)x^2+y^2

f = 包含以下值的 function_handle:

@(x,y)x^2+y^2

>> f(3,4)

ans =

25

函式的巢狀呼叫

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-svjzckya-1611460693010)(e:%5c%e5%ad%a6%e4%b9%a0%5c%e5%9b%be%e7%89%87%e7%ac%94%e8%ae%b0%5c%e5%b5%8c%e5%a5%97%e8%b0%83%e7%94%a8.png)]

遞迴呼叫:乙個函式呼叫它自身

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-0tbjnugo-1611460693012)(e:%5c%e5%ad%a6%e4%b9%a0%5c%e5%9b%be%e7%89%87%e7%ac%94%e8%ae%b0%5c%e9%80%92%e5%bd%92%e8%b0%83%e7%94%a8.png)]

%函式檔案

function f=ffib(n)

if n>2

f=ffib(n-1)+ffib(n-2);

else

f=1;

end%指令碼檔案

f=;for k=1:20

f=[f,ffib(k)*ffib(k)];

endsum(f)

ffib(20)*ffib(21)

函式引數的可調性

nargin 輸入實參的個數

nargout 輸出實參的個數

function fout=test(a,b,c)

if nargin==1

fout=a;

elseif nargin==2

fout=a+b;

elseif nargin==3

fout=(a*b*c)/2;

end

區域性變數 只在特定過程或函式中可以訪問的變數

全域性變數 整個mtlab工作空間中都可用

定義格式:global 變數名

%函式檔案

function f=wad(x,y)

global alpha beta %定義兩個全域性變數

f=alpha*x+beta*y;

%命令列視窗

global alpha beta

>> alpha =1; %命令列視窗可直接改變全域性變數的值

>> beta=2;

>> s=wad(1,2)

s = 5

bc)/2;

end

2. 區域性變數  只在特定過程或函式中可以訪問的變數

3. 全域性變數 整個mtlab工作空間中都可用

定義格式:global 變數名

```matlab

%函式檔案

function f=wad(x,y)

global alpha beta %定義兩個全域性變數

f=alpha*x+beta*y;

%命令列視窗

global alpha beta

>> alpha =1; %命令列視窗可直接改變全域性變數的值

>> beta=2;

>> s=wad(1,2)

s = 5

Matlab基礎學習筆記 二 2021 1 26

三角陣矩陣轉置 矩陣旋轉 矩陣翻轉 矩陣求逆 矩陣求值 特徵值與特徵向量 稀疏矩陣 diag a diag a,k 提取矩陣a的對角線元素 提取矩陣a的第k條對角線元素 產生乙個列向量 diag v diag v,k 以向量v為主對角線元素,產生對角矩陣 一向量v為第k條對角線元素,產生對角矩陣 例...

Matlab學習筆記(二)

四灰色 五遺傳演算法 六神經網路 先等等再學這個。主程式 用遺傳演算法求解y 200 exp 0.05 x sin x 再 2 2 上的最大值 clc clear all close all global bitlength global st global ed bounds 2 2 一維變數的取...

Matlab學習筆記1 基礎

沒寫過matlab的我又開始寫計算方法大作業了qaq,這學期真是自己選課坑自己。下了乙個matlab2016a,開始看。一開始有點不太適應matlab的程式設計語法,感覺很口語化,格式也亂亂的。語句可以直接輸在控制台裡,也可以把命令寫在乙個.m檔案裡,在控制台裡執行檔案。有的像cmd裡輸入命令和寫乙...