如果没有增加值,则分配值为空(Matlab)

时间:2012-10-03 19:35:11

标签: matlab

是否可以在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

虽然这看起来很丑陋但是很容易......

3 个答案:

答案 0 :(得分:6)

使用isempty代替

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

如果另一方面你不知道,如果变量完全存在,请使用exist

答案 1 :(得分:4)

如果要递增单值变量,而不是元素矩阵,则可以执行单行,无检查

var = sum(var) + 1; 

对于空矩阵,Sum将给出0,否则给出var的实际值(作为单元素和)。从empty matrices上的运算符的非空输出中,sum将为空值和非空值提供正确的输出。

答案 2 :(得分:0)

如果您知道要在循环中递增它,最简单的解决方案就是在循环外将majorityList初始化为零:

majorityList{1} = 0;
while loop==running
    majorityList{1} = majorityList{1}+1;
end