Matlab:如果条件在空矩阵上工作,则无法正常工作

时间:2013-08-20 21:37:54

标签: matlab if-statement

我的变量及其值,在if条件语句

leftoverROI1s{1}= [11 15];

missinglabelsinimage{1}是一个空矩阵。

我只想在for语句中的两个条件都为真时才执行if循环,即:

if ~isempty(leftoverROI1s{1}) && ~isempty(missinglabelsinimage{1})

    for % loop for each element in non-empty `missinglabelsinimage` structure array.
        % Add a scalar to each element of non-empty `missinglabelsinimage` structure array
        ...
    end % end for loop

end % end if

我的程序控制进入for循环(我希望,如果有空missinglabelsinimage{1})并且控件正在missinglabelsinimage{1}(空矩阵),则不应该这样做,这显然给了我一个错误,因为我试图在我的'非空'missinglabelsinimage{1}中添加一个标量。

我无法理解if条件中的错误。任何帮助将不胜感激。

PS:我检查了上面的变量

~isempty(missinglabelsinimage{1})
ans =    
     0

~isempty(leftoverROI1s{1})
ans = 
     1

missinglabelsinimage{1}
ans =
   Empty matrix: 1-by-0

1 个答案:

答案 0 :(得分:1)

我怀疑代码中某处有一个拼写错误,你没有显示。将您的示例简化为最基本的形式(尝试查找错误总是一个好主意):

a = [];
b = [1 2 3];
display(~isempty(a))
display(~isempty(b))

if ~isempty(a) && ~isempty(b) 
    disp('we passed the if')
else
    disp('we are in the else')
end

输出中的结果

ans =
     0
ans =
     1
we are in the else

正如您所期望的那样。如果你得到了不同的东西,那么你正在使用的代码不是你所展示的代码......某个地方是否存在类似的(错误输入的)变量?尝试执行clear all,然后运行一个可以重现问题的最小示例。