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 回答