我有一个变量A
,尺寸为1X100。我想分配A(i)=i
。但是,从m = 20开始,我需要为接下来的20个阵容分配1个。
A=zeros(1,100);
for m=1:100
A(m)=m; disp(m);
if m==20
A(m:m+20)=1;
m=m+21;
end
end
当我运行它时,输出显示m = 1到100,这意味着它不会从m = 20跳到m = 40。是否可以编写一个命令来跳过for循环中的20次迭代?我知道我可以尝试使用其他方式,例如while循环或分配A(20:40)= 1,前提是A在每个单元格中都有值。但我想强调在这里使用for循环。这是唯一的限制。
答案 0 :(得分:2)
Matlab不允许在循环内修改迭代变量(此处为m
)的值。
你可以像@NickMattson那样建议,也许可以简化它:
A=ones(1,100);
for m=[1:20, 41:100]
A(m)=m; disp(m);
end
或在循环中使用continue关键字:
A=ones(1,100);
for m=1:100
if m >= 20 && m <= 40
continue
end
A(m)=m; disp(m);
end
或使用while loop
:
A=zeros(1,100);
m = 1;
while m <= 100
if m == 20
m = 41
end
A(m)=m; disp(m);
m = m + 1
end
但当然最简单的是:
A = 1:100;
A(20:40)=1;
答案 1 :(得分:1)
您可以用这种方式定义class Entry(models.Model):
class Meta:
ordering = ['time']
time = models.DateTimeField(default=timezone.now)
inside = models.FloatField()
outside = models.FloatField()
gavg = models.IntegerField()
ghigh = models.IntegerField()
m