3

matlabで値が空かどうかを確認し、空の場合は値を割り当て、そうでない場合は(空でない場合は)割り当て中に値をインクリメントすることはできますか?

例えば:

このコードでは、インクリメントmajorityList{l}しますが、最初はこのセルは空(0ではない)であるため、インクリメントできません。これは、インクリメントする前に、最初にこれをチェックする必要があることを意味します。これは、割り当て自体の間に実行できますか?

 majorityList{l,2} = 'test'; 
 majorityList{l}=  majorityList{l}+1; 

私が書いた解決策は次のとおりです。

if length(majorityList{l})==0 
     majorityList{l} = 0;
     majorityList{l} = majorityList{l} +1;
else
    majorityList{l} = majorityList{l} +1; 
 end

これはとても簡単なものにはかなり醜いように見えますが...

4

3 に答える 3

6

そのために使用isemptyする

if ~isempty(var)
   var=var+1;
end

一方、わからない場合、変数がまったく存在しない場合は、を使用しますexist

于 2012-10-03T19:40:45.783 に答える
4

行列ではなく単一値の変数を要素ごとにインクリメントする場合は、ワンライナー、チェッカーなしを実行できます

var = sum(var) + 1; 

Sumは、空の行列の場合は0になり、それ以外の場合は実際の値になりvarます(単一要素の合計として)。空の行列に対する演算子の空でない出力から、sumは空の値と空でない値の両方に対して正しい出力を提供します。

于 2012-10-03T20:28:40.467 に答える
0

ループでインクリメントすることがわかっている場合、最も簡単な解決策はmajorityList、ループの外側でゼロに初期化することです。

majorityList{1} = 0;
while loop==running
    majorityList{1} = majorityList{1}+1;
end
于 2012-10-03T20:09:33.973 に答える