關閉→
當前位置:知科普>IT科技>if switch) - matlab循環+選擇是什麼(for while

if switch) - matlab循環+選擇是什麼(for while

知科普 人氣:9.42K

sum=0;Sum=2000;fori=1:Sumsum=sum+i;ifsum>=SumN=ibreakendend

有很多人對MATLAB循環+選擇很疑惑?今天就讓小編來為您講講!

方法

循環結構:for語句

輸出不正常的原因:matlab 中case 不同於if else, case 後面跟的應該是變量確切的值,而不是邏輯判斷。詳細可以在command window中輸入doc case查看。 舉例: function z=Untitled(x) a=1;b=2;c=3;d=4; z=0; switch x case 5 z=0; case 6 z=1; c

格式

     for 循環變量=表達式1:表達式2:表達式3

switch模塊是simulink公共模塊庫的一個基本模塊,switch模塊也可以理解開關模塊。其功能是輸入1時,輸入2,滿足選定的標準,否則,通過輸入3。輸入編號為底部(或左至右)。輸入1通過標準輸入2大於或等於,大於或不等於閾值。第一和第三個輸入端

                   循環體

function z=myfun1(x,y) if y==1 z=sin(x); elseif y==2 z=cos(x); else z=sin(x)*cos(x); end function z=myfun2(x) if x

     end

嗯就是你f(x,y)右邊 的這個等號不正確啊,這樣的定義是無效的。 if y == 1, z = sin(x); elseif y == 2, z = cos(x); else z = cos(x).*sin(x); end

matlab循環+選擇是什麼(for,while,if,switch)

while語句:

clear a=input('input a'); b=input('input b'); c=input('input c'); x=0.5:0.01:5.5; for i=1:length(x);%%用循環求對應的x(i)取整和對應的y(i) t=fix(x(i)-0.5); switch(t) %%switch開關來選擇y(i)表達式 case 0 y(i)=a*x(i)*x(i)+b*x(i)+c;

格式:

     while(條件)

function y = yfun(a,b,c,x) if (x>=0.5&x=1.5&x=3.5&x

           循環體

if h(i,j)==a1(i,j) e(i,j)=a(i,j); elseif h(i,j)==b1(i,j) e(i,j)=b(i,j); elseif h(i,j)==c1(i,j) e(i,j)=c(i,j); else h(i,j)==d1(i,j) e(i,j)=d(i,j); end 對這一段程序仔細分析,我沒有仔細分析前面的程序,但可以猜測以下,h(i,j)肯定會

     end

嗯就是你f(x,y)右邊 的這個等號不正確啊,這樣的定義是無效的。 if y == 1, z = sin(x); elseif y == 2, z = cos(x); else z = cos(x).*sin(x); end

【注】:條件成立時,執行循環體

您好,比如 switch expr case {a1, a2,} do_something_1; case b do_something_2; case {c1,c2,} do_something_3; end expr表達式從上至下尋找匹配,當它與某個case後面的元胞數組中的某個元素匹配,則執行該case分支的操作,然後跳出

matlab循環+選擇是什麼(for,while,if,switch) 第2張

break語句&& continue語句:

??? SWITCH expression must be a scalar or string constant. 表示:switch的表達式必須是數值或字符常量,不能是矩陣。 按你的程序,還是使用if選擇結構比較合適。

break:破壞,破壞循環,終止循環的進行,跳出循環,程序將執行循環語句的下一語句。

case語言表達式常用於舉例判斷的情況(比如常用的就是數組匹配返回的索引) switch value case {8} disp('良'); case {7} disp('中'); case {6} disp('及格'); otherwise disp('不合格'); end 如果是區間的條件判斷 應該而且建議用if value=input

continue:繼續,循環繼續,程序將跳過循環體中剩下的語句,繼續下一次循環。

將字母變為小寫 例子 lower ('This Is an Example. There Are 9 Letters Will Convert to Lowercase.')

matlab循環+選擇是什麼(for,while,if,switch) 第3張

循環的嵌套—多重循環結構

其實這種情況不適合用switch ,用if else判斷語句合適。為了説明switch用,這裏我加了一個switch的判斷: n1=0; %表示優的人數>=90分 n2=0;%表示良的人數>=80分 n3=0;%表示中的人數>=60分 n4=0;%表示不及格的人數=90 cj(i,1)='優'; elseif f>=80

如圖所示

matlab循環+選擇是什麼(for,while,if,switch) 第4張

選擇結構:if-else語句

if-else-end語句所對應的是多重判斷選擇,而有時也會遇到多分支判斷選擇的問題。 MATLAB語言為解決多分支判斷選擇提供了switch-case語句。 switch-case語句的一般表達形式為: switch〈選擇判斷量〉 Case 選擇判斷值1 選擇判斷語句1 case 選擇判

格式:

     if 表達式

首先你這個switch的用法就是錯的,case後跟一個值(注意是一個值!),用來判斷switch後的數是不是等於這個值,而不是case後接判斷語句。還有matlab 裏可以運行C語言程序。你這個程序可以將case用ifelse..條件代替,就能修改正確。(下

       程序模塊

sco=input('Please input the scoren'); switch floor(sco/10) case {9,10} t='A'; case 8 t='B'; case 7 t='C'; case 6 t='D'; case {0,1,2,3,4,5} t='E'; otherwise disp('Invalid score') end disp(['the score is ' t])

     end

嗯就是你f(x,y)右邊 的這個等號不正確啊,這樣的定義是無效的。 if y == 1, z = sin(x); elseif y == 2, z = cos(x); else z = cos(x).*sin(x); end

     if 表達式

首先你這個switch的用法就是錯的,case後跟一個值(注意是一個值!),用來判斷switch後的數是不是等於這個值,而不是case後接判斷語句。還有matlab 裏可以運行C語言程序。你這個程序可以將case用ifelse..條件代替,就能修改正確。(下

       程序模塊

sco=input('Please input the scoren'); switch floor(sco/10) case {9,10} t='A'; case 8 t='B'; case 7 t='C'; case 6 t='D'; case {0,1,2,3,4,5} t='E'; otherwise disp('Invalid score') end disp(['the score is ' t])

1

     else

switch語句適合分支的選擇結構,比較適合方式固定的選擇,比如對於那些分段函數比較 switch-case語句的一般表達形式為: switch〈選擇判斷量〉 Case 選擇判斷值1 選擇判斷語句1 case 選擇判斷值2 選擇判斷語句2 …… otherwise 判斷執行語句 end

       程序模塊

sco=input('Please input the scoren'); switch floor(sco/10) case {9,10} t='A'; case 8 t='B'; case 7 t='C'; case 6 t='D'; case {0,1,2,3,4,5} t='E'; otherwise disp('Invalid score') end disp(['the score is ' t])

2

     end

嗯就是你f(x,y)右邊 的這個等號不正確啊,這樣的定義是無效的。 if y == 1, z = sin(x); elseif y == 2, z = cos(x); else z = cos(x).*sin(x); end

matlab循環+選擇是什麼(for,while,if,switch) 第5張

switch語句:

case 貌似不能用判斷。。 一定要用case做的話 可以這麼做 clear,clc candy=input('Enter the number of candy bars you would like to buy:n'); if candy>3 candy1=candy; candy='BiggerThan3'; end switch candy case 1 a=0.75; case 2 a=1.25

格式:

     switch 表達式

我自己編的對任意底求對數的函數如下: function y=logn(n,x) switch(n) case 1 errordlg('不好意思,出錯了!!!'); case 2 y=log2(x); case exp(1) y=log(x); case 10 y=log10(x); otherwise y=log10(x)/log10(n); end 其中n為底數,x為真數

     case 數值1

閏年的概念: 普通閏年:能被4整除但不能被100整除的年份。(如2004年就是閏年,1999年不是閏年); 世紀閏年:能被400整除的的年份。(如2000年是閏年,1900年不是閏年); 根據閏年的概念,用matlab的switch語句實現,即任意輸入一個年份,判斷是不是閏

       程序模塊

sco=input('Please input the scoren'); switch floor(sco/10) case {9,10} t='A'; case 8 t='B'; case 7 t='C'; case 6 t='D'; case {0,1,2,3,4,5} t='E'; otherwise disp('Invalid score') end disp(['the score is ' t])

1

     case 數值2

       程序模塊

sco=input('Please input the scoren'); switch floor(sco/10) case {9,10} t='A'; case 8 t='B'; case 7 t='C'; case 6 t='D'; case {0,1,2,3,4,5} t='E'; otherwise disp('Invalid score') end disp(['the score is ' t])

2

     case 數值3

       程序模塊

sco=input('Please input the scoren'); switch floor(sco/10) case {9,10} t='A'; case 8 t='B'; case 7 t='C'; case 6 t='D'; case {0,1,2,3,4,5} t='E'; otherwise disp('Invalid score') end disp(['the score is ' t])

3

     ......

     otherwise

       程序模塊

sco=input('Please input the scoren'); switch floor(sco/10) case {9,10} t='A'; case 8 t='B'; case 7 t='C'; case 6 t='D'; case {0,1,2,3,4,5} t='E'; otherwise disp('Invalid score') end disp(['the score is ' t])

n

     end

嗯就是你f(x,y)右邊 的這個等號不正確啊,這樣的定義是無效的。 if y == 1, z = sin(x); elseif y == 2, z = cos(x); else z = cos(x).*sin(x); end

matlab循環+選擇是什麼(for,while,if,switch) 第6張

擴展閲讀,以下內容您可能還感興趣。

matlab switch 語句能否判斷多變量?

您好,比如

switch expr

case {a1, a2,...}

do_something_1;

case b

do_something_2;

case {c1,c2,...}

do_something_3;

...

end

expr表達式從上至下尋找匹配,當它與某個case後面的元胞數組中的某個元素匹配,則執行該case分支的操作,然後跳出switch-case結構。

注意,Matlab中switch後面的表達式可以是顯式邏輯值,即邏輯0和1(因此含比較運算的表達式不算在內)、純量或者字符串,因而case後面如果不是這些類型的值,那麼就不匹配。

與switch語句相比,if語句則靈活得多,if後面的表達式幾乎可以是任意的表達式。

下面舉個綜合的例子來説明switch表達式的特性,比如

switch 1

case [2,1]

disp('case1')

case {3,1}

disp('case2')

case {1,2}

disp('case3')

end

複製代碼

結果返回 case2

這説明,不符合條件的case(第一個case類型不對)不匹配;出現重疊的情況(第二、三個case),switch僅僅匹配最前面一個。

之所以Maltab只是匹配最前面的,就是因為它支持了case後面可以使用元胞數組的情況,這就相當於多個重複匹配的case集中在一起(這就相當於實現C/C++中不加break的情形)。

另外,如果使用if-elseif結構來實現上述功能,也是可行的,但是if-elseif本身是一個實現複雜分支程序流的結構,對於case情況非常多的時候,使用if-elseif不但代碼量很大,而且可讀性也沒switch那麼清晰(殺雞焉用牛刀)。而使用switch-case結構,則能縮減代碼量,可讀性也好得多。

對於效率方面,switch-case和if-elseif結構實現同樣功能,究竟孰優孰劣,這個就有待測試的檢驗了。個人認為if-elseif的效率更低,有2點原因:

1. switch-case語句只需要計算一次switch後面的表達式,然後去匹配各個case;而if-elseif對於每個if後面的表達式都要進行計算,然後判斷。

2. 從彙編的角度來説,if...elseif編譯完後是很多條比較指令和跳轉指令,而switch-case語句編譯完之後,則是一張地址表,使用case的值做表的索引,因此case裏的值最好步進為一。

總的來説,switch-case語句犧牲了靈活性,但提高了效率並使得代碼整潔。追問那就是説向這個情況 只能用if來完成了?

MATLAB中的switch問題

??? SWITCH expression must be a scalar or string constant.

表示:switch的表達式必須是數值或字符常量,不能是矩陣。

按你的程序,還是使用if選擇結構比較合適。

matlab switch-case的疑問

case語言表達式常用於舉例判斷的情況(比如常用的就是數組匹配返回的索引)

switch value

case {8}

disp('良');

case {7}

disp('中');

case {6}

disp('及格');

otherwise

disp('不合格');

end

如果是區間的條件判斷 應該而且建議用if

value=input('value=')

if value<=4.0 && value>3.5

disp(lettergrade='A');

elseif value<=3.5 && value>2.5

disp(lettergrade='B');

elseif value<=2.5 && value>1.5

disp(lettergrade='C');

elseif value<=1.5 && value>0.5

disp(lettergrade='D');

elseif value<=0.5 &&value>=0

disp(lettergrade='F');

else

disp(lettergrade='NA');

end

秒殺把

MATLAB中switch後面加上lower是什麼意思

你看一下switch後面的語句裏是不是有case,這是個循環語句,類似於if else。

lower函數是把字母變成小寫。

matlab中switch語句統計分段人數

其實這種情況不適合用 switch ,用if else判斷語句合適。為了説明switch用,這裏我加了一個switch的判斷:

n1=0; %表示優的人數 >=90分

n2=0;%表示良的人數 >=80分

n3=0;%表示中的人數 >=60分

n4=0;%表示不及格的人數 <60分

fs=[20,30,40,50,60,70,80,90,85,98,91,85,94];%表示所有人的分數,可以是個行向量,根據情況自己賦值就行

cj=num2str(zeros(length(fs),1));

for i=1:length(fs)

f=fs(i);

if f>=90

cj(i,1)='優';

elseif f>=80&&f<90

cj(i,1)='良';

elseif f>=60&&f<80

cj(i,1)='中';

elseif f<60

cj(i,1)='不';

cj(i,2)='及';

cj(i,3)='格';

end

switch cj(i,1)

case '優'

n1=n1+1;

case '良'

n2=n2+1;

case '中'

n3=n3+1;

case '不'

n4=n4+1;

end

end

運行結果:

cj = %與分數對應

不及格

不及格

不及格

不及格

n1 =

4

>> n2

n2 =

3

>> n3

n3 =

2

>> n4

n4 =

4追問謝謝了,只是我們實驗必須要用switch 的

。追答這次是switch

n1=0; %表示優的人數 >=90分

n2=0;%表示良的人數 >=80分

n3=0;%表示中的人數 >=60分

n4=0;%表示不及格的人數 <60分

fs=[20,30,40,50,60,70,80,90,85,98,91,85,94];%表示所有人的分數,可以是個行向量,根據情況自己賦值就行

cj=num2str(zeros(length(fs),1));

for i=1:length(fs)

f=floor(fs(i)/10);

switch f

case 10

n1=n1+1;

cj(i,1)='優';

case 9

n1=n1+1;

cj(i,1)='優';

case 8

n2=n2+1;

cj(i,1)='良';

case 7

n3=n3+1;

cj(i,1)='中';

case 6

n3=n3+1;

cj(i,1)='中';

case 5

n4=n4+1;

cj(i,1)='不';

cj(i,2)='及';

cj(i,3)='格';

case 4

n4=n4+1;

cj(i,1)='不';

cj(i,2)='及';

cj(i,3)='格';

case 3

n4=n4+1;

cj(i,1)='不';

cj(i,2)='及';

cj(i,3)='格';

case 2

n4=n4+1;

cj(i,1)='不';

cj(i,2)='及';

cj(i,3)='格';

case 1

n4=n4+1;

cj(i,1)='不';

cj(i,2)='及';

cj(i,3)='格';

case 0

n4=n4+1;

cj(i,1)='不';

cj(i,2)='及';

cj(i,3)='格';

end

end

TAG標籤:#forwhileifswitch #matlab #