Matlab的循环语句
1.ctrl+c可以强制终止运算
2.循环结构(loop):能够反复执行一段代码,Matlab中有
while和for两种循环,while适合执行循环次数不确定的循环
,for循环适合执行循环次数确定的循环。
while循环
3.while循环例题一
%用while循环计算1—100所有整数之和
add_sum=0;
n=1;
while (n>=1&&n<=100)
add_sum=add_sum+n;
n=n+1;
end
fprintf('总和是:%f\n',add_sum);
fprintf('n的值是:%f',n)
4.计算平均值(用mean)和标准差(用std)
>> A=[2 15 6 2 4 5 88 9]; 注意:要把数列按照数组的形式输入
>> mean(A)
ans =
16.3750
>> std(A)
ans =
29.2523
5.while循环例题二
%从键盘输入一系列数,直到输入负数为止,计算之前所有数据的平均数和标准差
%输入:x,sum_x,sumx2,n
%输出:average(平均值),std_dev(标准差)
x=input('请输入一个数据:\n');
sum_x=0;
sumx2=0;
n=0;
while (x>=0)
sum_x=sum_x+x;
sumx2=sumx2+x^2;
n=n+1;
x=input('请输入一个数据:\n');
end
average=sum_x/n;
std_dev=sqrt((n*sumx2-sum_x^2)/(n*(n-1)));
fprintf('平均值为:%f\n',average);
fprintf('标准差:%f\n',std_dev);
6.while循环例题二(补丁版)
%加补丁版
%从键盘输入一系列数,直到输入负数为止,计算之前所有数据的平均数和标准差
%输入:x,sum_x,sumx2,n
%输出:average(平均值),std_dev(标准差)
x=input('请输入一个数据:\n');
sum_x=0;
sumx2=0;
n=0;
while (x>=0)
sum_x=sum_x+x;
sumx2=sumx2+x^2;
n=n+1;
x=input('请输入一个数据:\n');
end
if(n>2)
average=sum_x/n;
std_dev=sqrt((n*sumx2-sum_x^2)/(n*(n-1)));
fprintf('平均值为:%f\n',average);
fprintf('标准差:%f\n',std_dev);
elseif(n==1)
average=sum_x/n;
disp('您只输入了一个数据,只有均值');
fprintf('平均值为:%f\n',average);
else
disp('您未输入有效数据,故无均值和标准差');
end
for循环
7.for循环语句
(1)语法格式:for index=expr
code block
end
(2)index是循环指数,它读取数组expr的列数,expr有多少
列,循环就执行多少次,expr最常见的就是冒号表达式
8.prod乘法函数,可以用来计算阶乘
比如 >> a=[1:6];
>> prod(a)
ans =
720
9.for循环例题一
%利用for循环语句计算n的阶乘
%ii(循环指数),n_factorial(n的阶乘)
n=input('请输入一个整数:\n');
n_factorial=1;
for ii=1:n;
n_factorial=n_factorial*ii;
end
fprintf('n的阶乘为:%f',n_factorial)
10.for循环例题二
%从键盘输入一系列数,计算之前所有数据的平均数和标准差
%用for循环完成
%输入:x,sum_x,sumx2,n
%输出:average(平均值),std_dev(标准差)
n=input('请输入数据的总个数:\n');
sum_x=0;
sumx2=0;
for ii=1:n;
x=input('请输入一个数据:\n');
sum_x=sum_x+x;
sumx2=sumx2+x^2;
end
if(n>2)
average=sum_x/n;
std_dev=sqrt((n*sumx2-sum_x^2)/(n*(n-1)));
fprintf('平均值为:%f\n',average);
fprintf('标准差:%f\n',std_dev);
elseif(n==1)
average=sum_x/n;
disp('您只输入了一个数据,只有均值');
fprintf('平均值为:%f\n',average);
else
disp('您未输入有效数据,故无均值和标准差');
end
break和continue
11.break和continue
(1)遇到break会跳出循环
(2)遇到continue会重复循环
(3)break_example
for ii=1:5;
if ii==3;
break;
end
fprintf('ii=%d\n',ii);
end
disp('End of loop!'); 注意:意思是“循环结束”
注意:当ii=1和2时,不进入if语句块,直接进入格式化输出fprintf。当ii=3时,进入if语句块,遇break跳出for循环,直接进入disp。
注意:第1行到第6行是for循环,第2行到第4行是if语句块。
(4)continue_example
for ii=1:5;
if ii==3;
continue;
end
fprintf('ii=%d\n',ii);
end
disp('End of loop!');
(5)%设计一个程序:要求通过键盘不断输入数据并存到一个数组当中,直到输入一个非数字数据,方可结束。
a=[];
n=1;
ii=0;
while(1)
ii=input('请输入一个数据:\n');
if(isnumeric(ii)) 注意:用于判断输入的是否为数字
a(n)=ii;
n=n+1;
else
break;
end
end
(6)%优化版,使得运行速率更高
%设计一个程序:要求通过键盘不断输入数据并存到一个数组当中,直到输入一个非数字数据,方可结束。
a=zeros(1,100); 注意,这将a定义为了一个100维,且元素全部为0的数组。当然,这个预设位数要小于将要输入数据的个数。
n=1;
ii=0;
while(1)
ii=input('请输入一个数据:\n');
if(isnumeric(ii)) 注意:用于判断输入的是否为数字
a(n)=ii;
n=n+1;
else
break;
end
end
循环嵌套
12.循环语句的嵌套
(1)Loop_nest
for ii=1:3
for jj=1:3
product=ii*jj;
fprintf('%d*%d=%d\n',ii,jj,product);
end
fprintf('End of inner loop\n');
end
fprintf('End of inner loop\n');
13.Matlab是解释型语言
C,C++是编译型语言