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
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分支的操作,然后跳出
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.')
循环的嵌套—多重循环结构
其实这种情况不适合用switch ,用if else判断语句合适。为了说明switch用,这里我加了一个switch的判断: n1=0; %表示优的人数>=90分 n2=0;%表示良的人数>=80分 n3=0;%表示中的人数>=60分 n4=0;%表示不及格的人数=90 cj(i,1)='优'; elseif f>=80
如图所示
选择结构: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])
1else
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])
2end
嗯就是你f(x,y)右边 的这个等号不正确啊,这样的定义是无效的。 if y == 1, z = sin(x); elseif y == 2, z = cos(x); else z = cos(x).*sin(x); end
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])
1case 数值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])
2case 数值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])
nend
嗯就是你f(x,y)右边 的这个等号不正确啊,这样的定义是无效的。 if y == 1, z = sin(x); elseif y == 2, z = cos(x); else z = cos(x).*sin(x); end
扩展阅读,以下内容您可能还感兴趣。
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