1. 程式人生 > >專題三 Matlab程式流程控制

專題三 Matlab程式流程控制

一.順序結構稱程式

1.edit命令建立指令碼

edit filename;

2.順序結構

資料輸入:A = input('提示資訊');
資料輸出:disp(A);
程式暫停:pause(delay time);  注:時間為0,程式停止
         ctrl+c 強行終止程式
1  有一線段AB,A的座標為(11),B的座標為(4.54.5),求AB的長度,
以及黃金分割點C的座標。
a=input('a=');
b=input('b=');
c=a+0.618*(b-a);
s=abs(a-b);
disp(s)
disp(c)

二.if語句

1.當條件語句為矩陣,矩陣非空且不包含非零元素時為真。

1  輸入一個整數,若為奇數則輸出其平方根,否則輸出其立方根。(雙分支)  
x=input('請輸入x的值:');
if rem(x,2)==1    %等價if rem(x,2)
    y=sqrt(x);
else
    y=x^(1/3);    %等價y=power(x,1/3);
end
y
2  輸入一個字元,若為大寫字母,則輸出其對應的小寫字母;若為小寫字母,則輸出
其對應的大寫字母;若為數字字元則輸出其對應數的平方,若為其他字元則原樣輸出。
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

三.switch語句

1  輸入一個英文單詞,判斷它是否以母音字母開頭。
%%使用switch語句
c=input('請輸入一個單詞:','s');
switch c(1) 
    case {'A','E','I','O','U'
,'a','e','i','o','u'}
disp([c,'以母音字母開頭']); otherwise disp([c,'以子音字母開頭']); end %%使用if語句findstr函式 c=input('請輸入一個單詞:','s'); if findstr(c(1),'AEIOUaeiou')>0 disp([c,'以母音字母開頭']); else disp([c,'以子音字母開頭']); end
2  PM2.5是指大氣中直徑小於或等於2.5微米的可入肺顆粒物,是衡量空氣質量的重要標。
假定空氣質量等級以PM2.5數值劃分為6級。 PM2.5數值在[035)空氣質量為優,[3575)
為良,[75115)為輕度汙染,[115150)為中度汙染,[150250)為重度汙染,大於等
於250為嚴重汙染。編寫程式,輸入PM2.5數值,輸出空氣質量等級。
g=input('請輸入PM2.5值:');
switch fix(g) 
    case num2cell(0:34)   % num2cell:將數值矩陣轉換為單元矩陣
        disp('空氣質量優');
    case num2cell(35:74) 
        disp('空氣質量良好');
    case num2cell(75:114) 
        disp('空氣質量輕度汙染');
    case num2cell(115:149) 
        disp('空氣質量中度汙染'); 
    case num2cell(150:249) 
        disp('空氣質量重度汙染');  
    otherwise 
        disp('空氣質量嚴重汙染');
end

四.for語句

1.說明

    1)for語句針對向量的每一個元素執行一次迴圈體
    2)退出迴圈後,迴圈變數的值就是向量中最後元素的值
    3)向量為空迴圈體不執行
    4)對於矩陣,迴圈變數=矩陣的每一列,此時迴圈變數為向量
     (例:5行4列矩陣執行4次)
例:計算圓周率π。
(1)利用無窮級數展開式求π的近似值。
%%用if迴圈語句%
y=0;
g=-1;
n=input('n=?'); 
for i=1:n
    g=-g;
    y=y+g/(2*i-1); 
end
pai=4*y

%%用向量求和的方法實現程式%
n=input('n=?');
x=1:2:(2*n-1);
y=(-1).^(2:n+1)./x;
pai=sum(y)*42)利用定積分的近似值求π的近似值。
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];
end
pai=4*sum(s)


(3)利用蒙特卡洛法求π的近似值。
s=0;
n=input('n=?');
for i=1:n
    x=rand(1);
    y=rand(1);
    if x*x+y*y<=1
        s=s+1;
    end
end
pai=s/n*4

五.while語句

1  從鍵盤輸入若干個數,當輸入0時結束輸入,求這些數的平均值和它們之和。
msum=0;
n=0;
x=input('Enter a number (end in 0):');
while x~=0
    msum=msum+x;
    n=n+1;
    x=input('Enter a number (end in 0):');
end
if n>0
    msum
    mean=msum/n
end
2[100200]之間第一個能被21整除的整數。
for n=100:200
    if rem(n,21)~=0
        continue      %continue跳出本次迴圈,繼續執行下一次
    end
    n
    break          %break跳出迴圈
end
3  用篩選法求某自然數範圍內的全部素數。
m=input('m='); 
p=1:m;
p(1)=0;
for i=2:sqrt(m)
    for j=2*i:i:m
        p(j)=0;
    end
end
n=find(p~=0);
p(n)

六.函式檔案定義與呼叫

1.定義、呼叫

    return:表示結束函式的執行,可不使用,程式會自動返回
1  編寫函式檔案,求半徑為r的圓的面積和周長。
%%functoin 輸出形參表=函式名(輸入形參表)%
function [s,p]=fcircle(r)
s=pi*r*r;
p=2*pi*r;

2.匿名函式

    基本格式:
    函式控制代碼變數[email protected](匿名函式輸入引數)匿名函式表示式   @:函式控制代碼運算名
    函式控制代碼變數[email protected]函式名
2  已知=(40)/((30)+(20))
①當()=+10 ln⁡(^2+5)時,的值是多少。
②當()=1×2+2×3+3×4+⋯+×(+1)時,的值是多少。
分別用匿名函式和函式檔案定義函式。
%%第二問的函式檔案f2.m。%
function f=f2(n)
f=0;
for k=1:n
    f=f+k*(k+1);
end
%%第一問指令碼檔案mf.m。%
[email protected](n) n+10*log(n*n+5);
y1=f1(40)/(f1(30)+f1(20))
y2=f2(40)/(f2(30)+f2(20))

七.函式的遞迴呼叫

呼叫

1  利用函式的遞迴呼叫,求n!。
函式檔案fact.m如下:
function f=fact (n)
if n<=1
    f=1;
else
    f=fact (n-1)*n;    %遞迴呼叫求(n-1)!
end
在指令碼檔案a.m中呼叫函式檔案fact.m,求n!。
n=input('Please input n=');
s=fact (n);
disp(s)
2  Fibonacci數列定義如下:
                f1=1
                f2=1
                fn=fn-1+fn-2   (n>2) 
編寫遞迴呼叫函式求Fibonacci數列的第n項,然後呼叫該函式驗證Fibonacci數列
的如下性質:
                  f1^2+f2^2+f3^2+……+fn^2=fn×fn+1
首先建立函式檔案ffib.m。
function f=ffib(n)
if n>2
    f=ffib(n-1)+ffib(n-2);
else
    f=1;
end
建立程式檔案test.m。
F=[];
for k=1:20
    F=[F,ffib(k)*ffib(k)];
end
sum(F)
ffib(20)*ffib(21)

八.函式引數與變數的作用域

1.函式引數的可調性

    nargin: 記錄輸入實參的個數
    nargout:記錄輸出實參的個數
1  利用nargin和nargout建立函式檔案test.m。
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

2.全域性變數與區域性變數

    全域性變數定義格式:global 變數名
2  利用全域性變數建立函式檔案wad.m。
function f=wad(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;

%%在工作區使用全域性變數
>>global ALPHA BETA
>>ALPHA=1
>>BETA=2
>>s=wad(2)
s = 
     5

相關推薦

專題 Matlab程式流程控制

一.順序結構稱程式 1.edit命令建立指令碼 edit filename; 2.順序結構 資料輸入:A = input('提示資訊'); 資料輸出:disp(A); 程式暫停:pause(delay time); 注:時間為0,程式停止

matlabMATLAB程式流程控制

專題三    MATLAB程式流程控制 一    順序結構程式 程式的三種基本結構:順序結構、選擇結構、迴圈結構。 程式檔案分為指令碼檔案和函式檔案。指令碼檔案是可以在命令列視窗直接執行的檔案,也叫作命令檔案;函式檔案是定義一個函式,不能直接執行,而必須以函式呼叫的方式

TIJ 第程式流程控制

本章講述了操作符及程式流程控制1.   操作符 名稱 內容 結果型別 算術操作符 +   -   *    /    % 基本型別 關係操作符 >    <     ==    !=     >       < boolean邏輯操作符 &&a

MATLAB程式流程控制語句格式簡記

目錄 for 迴圈 下面主要記錄matlab中的程式流程控制格式: if-else-end 結構 1. if expr      %expr為表示式,如果成立,則執行到end為止的所有commands,否則不執行 commands;

JAVA-初步認識-第章-其他流程控制語句

繼續 bre ges con 它的 -1 範圍 一個 span 一. 其他的流程控制語句 比較簡單,但要註意的是它們有自己的控制範圍,離開範圍就沒用了。就是兩個關鍵字,加上分號,就是一個語句。 break;continue; break意思是跳出,跳出就代表著有自己的範圍,

MYSQL進階學習筆記:MySQL流程控制語句!(視頻序號:進階_7-10)

sls @age 分享 流程 null set oop 默認 soft 知識點四:MySQL流程控制語句(7-10) 選擇語句:   (IF ELSE ELSE IF CASE 分支)IFNULL函數 IF語法: 語法規則:

天(下) 流程控制 if while swtich break continue

images eight equals方法 每次 標簽 mil tor weight border 控制流程 與任何程序設計語言一樣,java也用條件語句和循環結構來控制流程.什麽叫流程控制呢 可以控制程序的執行流程流程控制的分類 順序結構

關鍵字,識別符號,變數,運算子,程式流程控制,陣列

關鍵字 所有字母都為小寫 保留字 識別符號 java中的名稱命名規範 包名:多單片語成時所有字母都小寫:xxxyyyzzz 類名,介面名:多單片語成時,所有的首字母大寫:XxxYyyZzz 變數名,方法名:多單片語成時,前一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz

新手初入Java(程式流程程式的除錯

(一)程式流程 Java程式語句執行的順序包括4種基本控制結構:順序結構、選擇結構、迴圈結構和異常處理邏輯結構。 1、順序結構 在Java程式中,語句執行的基本順序按各語句出現的位置先後順序執行,稱之為順序結構,如圖所示,先執行語句塊1,在執行語句塊2,最後執行語句塊3,三者

Java基礎複習第天:流程控制語句if()...else、switch() case、do while()、for迴圈()

  目錄 第一章 流程控制 1.流程控制的分類 2.死迴圈 3.跳出語句(迴圈控制語句) 4.巢狀迴圈 從下次開始,會盡量會直接懟上程式碼,減少文字 ----------------------------------------------------

python自動化運維學習第天--if流程控制

python流程控制 if if語句 if expression: statement elif expression: statement else: statement else和elif語句塊可以沒有,elif可以有多個,if和else只能有一個。

Java語言基礎(二)---程式流程控制語句、函式

Java語言基礎組成:關鍵字、識別符號、註釋、常量和變數、運算子、語句、函式、陣列 一. 程式流程控制語句 1. 順序結構: 簡單的語句都是順序結構的。 2. 判斷結構: 【if 語句定義】 (1) if(條件表示式)   { 

【.NET】03 程式流程控制語句及其應用

3.1 算術運算子 算術運算子: + - * / % 3.2 強制型別轉換和自動型別轉換 自動型別轉換(隱式轉換) : 將精度低資料轉換為精度高的資料,系統自動進行,不會造成資料精度的丟失。 目標型別大於源型別 顯式型別轉換(強制轉換) 目標型別 小於 源型別

)Lua 流程控制

Lua 流程控制 控制結構的條件表示式結果可以是任何值,Lua認為false和nil為假,true和非nil為真。 語句 描述 if if語句 由一個布林表示式作為條件判斷,其後緊跟其他

Prolog教程 15--程式流程控制

-repeat/0。它在第一次呼叫時永遠成功,並且在回溯時也永遠成功。換句話說,流程不可能回溯通過repeat/0。 如果某個子句中有repeat/0,並且其後有fail/0謂詞出現,那麼將永遠迴圈下去。使用這種方法可以編寫死迴圈的Prolog程式。 在這一章,繼續探索Prolog的程式

(轉)smali語言程式流程控制語法

https://blog.csdn.net/Ceryool/article/details/51314394 選擇結構(if-else) smali條件跳轉分支語法 if-<條件> v0 v1,:cond_** // 如果v0<條件>v1成立,則跳轉到:cond_

程式流程控制——選擇結構

                                       選擇結構 switch——>可以翻譯成:開關,交換的意思。 格式: switch(表示式)——>必須對誰進行選擇 {     case 取值1:——>這個叫被選答案       

資訊學奧賽一本通(C++版)第一部分 C++語言 第程式控制結構

第三章 程式的控制結構 第一節 if選擇結構 T1039 : 判斷數正負 【題目描述】   給定一個整數NNN,判斷其正負。如果N&gt;0N&gt;0N>0,輸出positive;如果N=0N=0N=0,輸出zero;如果N&lt

java程式流程控制(if、switch、for)

java程式流程控制  1.判斷結構 2.選擇結構 3.迴圈結構 一》if語句三種格式 1.if(條件表示式) {     執行語句; } 2.if(條件表示式) {   執行語句; } else {   執行語句; } 3.if(條件表示式) {   執行語句; } el

java學習之路之基本語法-程式流程控制-switch語句練習題

switch(變數){ case 常量1: 語句1; break; case 常量2: 語句2; break; … … case 常量N: 語句N; break; defa