我在表(Practices
)中有一个变量(CumPractices
),其值如下:
0
4
6
10
0
12
18
0
22
我想创建另一个变量,它必须满足以下条件:
我可以完成循环以满足前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
答案 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]
注意:我稍微重命名了变量,但从解决方案来看并不重要。