Matlab:“for loop”不会减少

时间:2015-05-25 13:00:15

标签: matlab

有人可以帮我解决这个问题吗? Matlab简单地拒绝考虑if语句中的for o=k:k-20语句。

if d(k)<=-1.5 || d(k) >=1.5
        k
        tab=tab+1
        6
        %table_results(k,:)=[5, d(k), E(k,1), b(k,1), F(k,1)];
        for o=k:k-20  
            5
            if abs(d(o))<abs(d(o-1))
            bench_value=o;
            break;
            end
        end
    .
    .
    .
    .
    end

3 个答案:

答案 0 :(得分:5)

试试这个:

for o=k:-1:k-20

当你写for variable=1:5时(例如),Matlab会将1:5扩展为[1 2 3 4 5]并将每个值传递给for。由于您的范围从kk-20:运算符会返回一个空数组,因为它会将值从第一个值递增到最后一个值。为了减少它,你应该在中间传递-1。例如,5:-1:1将扩展为[5 4 3 2 1]

答案 1 :(得分:2)

表达式for o=k:k-20可以重写为while循环:

o = k;
while (o < k-20)
  % Do something
  o = o+1;
end

从这里开始,它应该更清楚一点,你永远不会进入循环,因为当你开始时,o已经大于k-20

如果您希望ok转到k-20 向后,则应将其写为:for o=k:-1:k-20,其中{ {1}}意味着它应该减少 -1

答案 2 :(得分:0)

for o=k:k-20

这个语句会给“o”一个空向量,因为MATLAB默认假设o = k:1:k-20,其中:1:中间是增量跳转,减少你必须加-1而不是这个1因此MATLAB将知道你想在for循环中递减