2016-07-19 20 views
2

内の別のIF文の中で、私は次の値を持つテーブル内の変数(Practices)(CumPractices)持っている:私は、次を満たすために持っている別の変数を、作成したい条件IF MATLAB

0 
4 
6 
10 
0 
12 
18 
0 
22 

を:次いで

  • 0,0
  • ない0、次いで、前の行
  • から値を減算するときPRから値(現在の行-2)

私は最初の2つの基準(下記参照)を満たすためにループを実行できますが、私は第3の基準を説明するのに苦労しています。誰でも助けてくれますか?

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

[if/elseif/else](http://uk.mathworks.com/help/matlab/ref/if.html)を使用しますか?それはすべてのドキュメントにあります... –

+1

2(またはそれ以上)のゼロがありますか? (i-1)== 0(i-2) – Finn

+0

ああ、はい、2つ以上のゼロがある可能性があるので、これはさらに複雑です私は思った...私は以前の非ゼロを見つける必要があります。あなたはこれを行う方法を知っていますか?ありがとうございました!!! – Paula

答えて

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] 

またはあなたが持っているしたい場合は値はから前の行の(私はあなたの例のために混乱していました)から、ループaを変更することができますs:

これは、存在していない場合、以前の非ゼロ要素から減算されます。

出力は次のようになります。

>> blank' 

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

注:私は、変数を少し改名さが、それは解決策の項には関係ありません。