MATLAB中另一个IF语句中的IF条件
我在表(MATLAB中另一个IF语句中的IF条件,matlab,Matlab,我在表(cumpactices)中有一个变量(Practices),具有以下值: 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.Practi
cumpactices
)中有一个变量(Practices
),具有以下值:
0
4
6
10
0
12
18
0
22
我想创建另一个变量,它必须满足以下条件:
- 当0时,则为0
- 如果不是0,则从上一行中减去该值
- 前一行的值为0时,从前一行(当前第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
只需将前一个非零元素存储在变量中,并在减法中使用:
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
输出
或者,如果您希望将上一行的值减去(由于您的示例,我感到困惑),则可以将循环修改为:
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
它将从之前的非零元素(如果有)中减去
输出为:
注意:我稍微重命名了变量,但这与解决方案无关。Use?这些都在文档中…可以有2个(或更多)零吗?所以你必须找到通透的非零,还是如果(i-1)==0,那么(i-2)哦,是的,可能有2个或更多的零,所以这比我想的更复杂。。。我需要找到以前的非零。你知道怎么做吗?非常感谢。
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]