在MATLAB中的另一个IF语句中的IF条件

时间:2016-07-19 10:27:46

标签: matlab

我在表(Practices)中有一个变量(CumPractices),其值如下:

0 
4
6
10
0
12
18
0
22

我想创建另一个变量,它必须满足以下条件:

  • 当0,然后0
  • 当不为0时,则从上一行中减去该值
  • 当前一行的值为0时,从前一行(当前行-2)
  • 中减去

我可以完成循环以满足前2个标准(请参见下文),但我正在努力解释第三个标准。有人可以帮帮我吗?

blank = cell(n,1)
for i=1:height(CumPractices)
   if CumPractices.Practices(i)==0
      blank{i,1} = 0
   else
       blank{i,1} = CumPractices.Practices(i)-CumPractices.Practices(i-1)  
   end
end

1 个答案:

答案 0 :(得分:1)

只需将前一个非零元素存储在一个变量中,然后在减法中使用它:

Practices = [0; 4; 6; 10; 0; 12; 18; 0; 22];

blank = cell(size(Practices, 1),1);
prevNonZero = 0;
for i = 1:size(Practices, 1)
   if Practices(i)==0
      blank{i,1} = 0;
   else
       blank{i,1} = Practices(i) - prevNonZero;
       prevNonZero = Practices(i);
   end
end

输出

>> blank'

ans = [0]    [4]    [2]    [4]    [0]    [2]    [6]    [0]    [4]

或者,如果您希望从上一行中删除 的值(由于您的示例我感到困惑),那么您可以将循环修改为:

for i = 1:size(Practices, 1)
    if Practices(i) == 0
        blank{i,1} = 0;
    else
        if prevNonZero ~= 0
            blank{i,1} = prevNonZero - Practices(i);
        else
            blank{i,1} = Practices(i);
        end
        prevNonZero = Practices(i);
    end
end

如果存在任何元素,将从之前的非零元素中减去。

输出为:

>> blank'

ans =  [0]    [4]    [-2]    [-4]    [0]    [-2]    [-6]    [0]    [-4]

注意:我稍微重命名了变量,但从解决方案来看并不重要。