如何在循环中跳过matlab中的行?

时间:2018-04-11 06:56:55

标签: matlab for-loop

我有一个变量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循环。这是唯一的限制。

2 个答案:

答案 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