for循环用来重复指定次数,由于for、循环变量、end组成
例1:
for i = 1:5 %i为循环变量 fprintf('the value is:%f',i) end
以下为输出结果:
上面的输出结果没有换行,%f和%f\n的区别就在于%f\n多了个换行,%f指的是可以输出后面想要输出的变量,\n就是换行的意思。因而%f\n表示输出后面的变量且换行:
for i = 1:5 %i为循环变量 fprintf('the value is:%f\n',i) end
例2:输出10个*
%两个for循环都能输出10个*,一个没换行一个换行 for i = 1:10 fprintf('*') end %换了行的10个*,\n即表示换行 for i = 1:10 fprintf('*\n') end
例3:要写一个交互性的代码,获得多个数字:
%用input一个个去写 inputnum1=input('please input a number:') inputnum2=input('please input a number:') inputnum3=input('please input a number:') inputnum4=input('please input a number:')
%如果数字足够多时,用input一个个的去写几乎是不可能的事情 %用for循环 for i=1:4 inputnum = input('please input a number:') %重复循环4次'please input a number: end
但是这样做会有个后果,就是每次存储的inputnum都会覆盖前一次存储的数字。要解决这个问题:
%将循环变量赋给变量名,每次更新.但这样输出的是1行b列的数据。无法自己选择输出a行1列或者1行b列 for i=1:10 inputnum(i) = input('please input a number:') end
%可以建立一个a行b列的空向量,将所有的数据全都存储在该空向量里 可以选择a行1列或者1行b列 %建立一个1行b列的空向量,将数据全都存储里面 inputnum=NaN(1,10) %建立一个1行10列的空向量 for i=1:10 inputnum(i) = input('please input a number:') end
%建立一个a行1列的空向量,将数据全都存储里面 inputnum=NaN(10,1) %建立一个10行1列的空向量 for i=1:10 inputnum(i) = input('please input a number:') end
例4:输入5个数字并让其进行累加
sum = 0 for i=1:5 num = input ('please input a number:')%每输入一个number都会覆盖前一个num sum = sum + num end
sum = 0 for i= 1:5 num(i) = input('please input a number:') %将每次输入一个的存储到num(i)里,number不会覆盖前一个num sum = sum + num(i) % 从sum=0开始累加,要加的是num(i),因为num是一个储存所有数据的集合,num(i)是一个个要加的数据 end
num =NaN(5,1) %建立一个5行1列的空矩阵,可以将数据存储到空矩阵中 sum = 0 for i= 1:5 num(i) = input('please input a number:') %将每次输入一个的存储到num(i)里,number不会覆盖前一个num sum = sum + num(i) % 从sum=0开始累加,要加的是num(i),因为num是一个储存所有数据的集合,num(i)是一个个要加的数据 end
例5:写一个随机执行3-10次的循环,并将其累加
n = randi([3,10]) %随机生成一个在3-10之间的整数 sum = 0 for i = 1:n num(i) = input('please input number:') sum = sum + num(i) end
例6:写一个随机执行3-10次的循环,并将其累乘
n = randi([3,10]) %随机生成一个在3-10之间的整数 product = 1 for i = 1:n num(i) = input('please input number:') product = product * num end
注: 在如果循环的次数很多时,提前定义一个空向量来作为存储是十分重要的!称之为向量预分配,这样能够大大的降低matlab的工作负荷。