matlab循环+选择是什么(for while - if switch)

来源:趣味经验馆 1.07W

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

热门标签