Matlab里for循环详解

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的工作负荷。