日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《MATLAB图像处理375例》——1.8 MATLAB程序流程控制结构

發布時間:2024/1/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《MATLAB图像处理375例》——1.8 MATLAB程序流程控制结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節書摘來自異步社區《MATLAB圖像處理375例》一書中的第1章,第1.8節,作者:MATLAB技術聯盟著,更多章節內容可以訪問云棲社區“異步社區”公眾號查看

1.8 MATLAB程序流程控制結構

MATLAB圖像處理375例
作為計算機語言,編程是必需的,編程靠的是程序控制語句。計算機語言程序控制模式主要有三大類:順序結構、選擇結構和循環結構。這一點MATLAB與其他編程語言完全一致。

1.8.1 順序結構
順序結構是指所有組成程序源代碼的語句按照由上至下的次序依次執行,直到程序的最后一個語句。這種程序的優點是容易編制;缺點是結構單一,能夠實現的功能有限。

在MATLAB語言的函數中,變量主要有輸入變量、輸出變量及函數內所使用的變量。

(1)數據輸入。

從鍵盤輸入數據,可以使用input函數來進行,該函數的調用格式為:

A=input(提示信息,選項);

其中提示信息為一個字符串,用于提示用戶輸入什么樣的數據。

如果在input函數調用時采用's'選項,則允許用戶輸入一個字符串。例如,想輸入一個人的姓名,可采用命令:

xm=input('hello world','s');

(2)數據輸出。

MATLAB提供的命令窗口輸出函數主要有disp函數,其調用格式為:

disp(輸出項)

其中輸出項既可以為字符串,也可以為矩陣。

【例1-64】數據輸出示例。

A='MATLAB'; disp(A)

運行結果如下:

MATLAB

【例1-65】輸入x,y的值,并將它們的值互換后輸出。

x=input('Input x.'); y=input('Input y.'); z=x; x=y; y=z; disp(x); disp(y);

運行結果如下:

Input x.1 Input y.221

【例1-66】對任一自然數n,按如下法則進行運算:若n為偶數,則將n除2;若n為奇數,則將n乘2加1。將運算結果按上面法則繼續運算,重復若干次后計算結果最終是1。

n=input('input n=');  %輸入數據 while n~=1      r=rem(n,2);  %求n/2的余數if r ==0n=n/2  %第一種操作elsen=2*n+1  %第二種操作end end

運行結果如下:

input n=5 n =32 n =16 n =8 n =4 n =2 n =1

(3)程序的暫停。

暫停程序的執行可以使用pause函數,其調用格式為:

pause(延遲秒數)

如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續執行。若要強行中止程序的運行,則可使用Ctrl+C命令。

1.8.2 選擇結構
在MATLAB中,選擇結構依照不同的判斷條件進行判斷,然后根據判斷的結果選擇某一種方法來解決某一個問題。

在MATLAB中,if語句有3種格式。

(1)單分支if語句。

if 條件語句組end

當條件成立時,則執行語句組,執行完之后繼續執行if語句的后繼語句,若條件不成立,則直接執行if語句的后繼語句。

(2)條件判斷語句也是程序設計語言中流程控制語句之一。使用該語句,可以選擇執行指定的命令,MATLAB語言中的條件判斷語句是if-else-end語句。

雙分支if語句:

if 條件語句組1else語句組2end

當條件成立時,執行語句組1,否則執行語句組2,語句組1或語句組2執行后,再執行if語句的后繼語句。

在程序設計中,也經常碰到需要進行多重邏輯選擇的問題,這時可以采用if-else-end語句的嵌套形式:

if〈邏輯判斷語句1〉邏輯值1為“真”時的執行語句 elseif〈邏輯判斷語句2〉邏輯值2為“真”時的執行語句 elseif〈邏輯判斷語句3〉 …… else

當以上所有的邏輯值均為假時的執行語句
end
(3)多分支if語句。

if 條件1語句組1elseif 條件2語句組2……elseif 條件m語句組melse語句組nend

用于實現多分支選擇結構。

(4)if-else-end語句所對應的是多重判斷選擇,而有時也會遇到多分支判斷選擇的問題。MATLAB語言為解決多分支判斷選擇提供了switch-case語句。

switch語句根據表達式的取值不同,分別執行不同的語句,其語句格式為:

switch 表達式case 表達式1語句組1case 表達式2語句組2……case 表達式m語句組motherwise語句組nend

與其他的程序設計語言的switch-case語句不同的是,在MATLAB語言中,當其中一個case語句后的條件為真時,switch-case語句不對其后的case語句進行判斷,也就是說在MATLAB語言中,即使有多條case判斷語句為真,也只執行所遇到的第一條為真的語句。這樣就不必像C語言那樣,在每條case語句后加上break語句以防止繼續執行后面為真的case條件語句。

【例1-67】計算分段函數的值。

程序如下:

x=input('請輸入x的值:'); if x<=0y= (x+sqrt(pi))/exp(2) elsey=sin(x+sqrt(1+x*x))/2 end

運行結果如下:

請輸入x的值:1 y =0.3325

【例1-68】輸入三角形的三條邊,求面積。

程序如下:

A=input('請輸入三角形的三條邊:');if A(1)+A(2)>A(3) & A(1)+A(3)>A(2) & A(2)+A(3)>A(1)p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));disp(s);elsedisp('不能構成一個三角形。')end

運行結果如下:

請輸入三角形的三條邊:[6 8 10]24 請輸入三角形的三條邊:[1 1 2]

不能構成一個三角形。
【例1-69】輸入一個字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導字符,若為其他字符則原樣輸出。

程序如下:

E=input('','s');If E>='A' & E<='Z'disp(setstr(abs(E)+1));elseif E>='a'& E<='z'disp(setstr(abs(E)-1));elsedisp(c);end

運行結果如下:

A B b a a ` * *

【例1-70】switch語句示例。

程序如下:

a=input('a=?'); switch a case 1 disp('a=1');case {2,3,4}     disp('a=2or3or4');case 5disp('a=5');otherwise        disp('other value'); end;

運行結果如下:

a=?3 a=2or3or4 a=?6 other value

1.8.3 循環結構
在MATLAB中,循環結構就是在程序中某一條語句或多條語句重復多次的運行。

在MATLAB中,包含兩種循環結構:循環次數不確定的while循環,循環次數確定的for循環。這兩種不完全相同,各有特色。

(1)for循環結構。

for循環語句是流程控制語句中的基礎,使用該循環語句可以以指定的次數重復執行循環體內的語句,其格式為:

for 循環變量=表達式1:表達式2:表達式3
    循環體語句
  end
其中,表達式1的值為循環變量的初值,表達式2的值為步長,表達式3的值為循環變量的終值。步長為1時,表達式2可以省略。

(2)while循環結構。

while語句可以實現“當”型的循環結構,格式為:

while(表達式)MATLAB語句end

其中,循環判斷語句為某種形式的邏輯判斷表達式,當該表達式的值為真時,就執行循環體內的語句;當表達式的邏輯值為假時,就退出當前的循環體。

在while循環語句中,必須有可以修改循環控制變量的命令,否則該循環語言將陷入死循環,除非循環語句中有控制退出循環的命令,如break語句、continue命令。當程序流程運行至該命令時,不論循環控制變量是否滿足循環判斷語句均將退出當前循環,執行循環后的其他語句。

【例1-71】水仙花數是指一個n位數(n≥3),它每個位上的數字的n次冪之和等于它本身。輸出全部水仙花數。

程序如下:

for m=100:999 m1=fix(m/100);          %求m的百位數字 m2=rem(fix(m/10),10);      %求m的十位數字 m3=rem(m,10);          %求m的個位數字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end

運行結果如下:

153370371407

【例1-72】輸入若干個數,當輸入0時結束輸入,求這些數的平均值和它們的和。

程序如下:

sum=0; n=0; val=input('請輸入數字 (輸入0結束):'); while (val~=0)sum=sum+val;n=n+1;val=input('請輸入數字 (輸入0結束):'); end if (n > 0)summean=sum/n end

運行結果如下:

請輸入數字 (輸入0結束):1 請輸入數字 (輸入0結束):2 請輸入數字 (輸入0結束):3 請輸入數字 (輸入0結束):4 請輸入數字 (輸入0結束):5 請輸入數字 (輸入0結束):0 sum =15 mean =3

1.8.4 程序流程控制語句及其他常用命令
1.break命令
在MATLAB中,break命令通常用于for或while循環語句中,與if語句一起使用,中止本次循環,跳出最內層循環。

【例1-73】break命令示例。

a=5;b=8; for i=1:4b=b+1;if i>2break   %當if條件滿足時不再執行循環enda=a+2 end

運行結果如下:

a =7 a =9

2.continue命令
通常用于for或while循環語句中,與if語句一起使用,達到跳過本次循環,去執行下一輪循環的目的。

【例1-74】continue命令示例。

a=5;b=8; for i=1:4b=b+1;if i<2continue   %當if條件滿足時不再執行后面語句enda=a+2      %當i<2時不執行該語句 end

運行結果如下:

a =7 a =9 a =11

3.try指令
try語句是MATLAB特有的語句,先試探性地執行語句1,如果出錯,就將錯誤信息存入系統保留變量lasterr中;然后再執行語句2,如果不出錯,就轉向執行end后面的語句。此語句可以提高程序的容錯能力,增加編程的靈活性。該指令的一般結構是:

try 語句1 catch 語句2 end

【例1-75】已知某圖像文件,但不知其存儲格式為.bmp還是.jpg,試編程正確讀取該圖像文件。

trypicture=imread('tire.bmp','bmp');filename='tire.bmp'; catchpicture=imread('tire.tif','tif');filename='tire. tif '; end filename

運行結果如下:

filename filename = tire.bmp

【例1-76】先求兩矩陣的乘積,若出錯,則自動轉去求兩矩陣的點乘。

A=magic(2); B=[7,8;10,11]; tryC=A*B; catchC=A.*B; end C lasterr  %顯示出錯原因

運行結果如下:

C =37  4148  54 ans = SWITCH 表達式必須為標量或字符串常量

總結

以上是生活随笔為你收集整理的《MATLAB图像处理375例》——1.8 MATLAB程序流程控制结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。