我的变量及其值,在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
答案 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
,然后运行一个可以重现问题的最小示例。