在if语句中将值与Matlab中的空集[]进行比较

时间:2015-08-18 06:17:28

标签: matlab if-statement comparison

当比较评估为[]TRUE时,我想做一些事情。

例如,假设比较为x > 1,其中x可以是以下两者。

x = 2
x = []

如果x > 1提供[]TRUE,我想显示“是”。

我能做到

if x <= 1
    disp 'no'
else 
    disp 'yes'
end

但是在没有否定比较运算符的情况下,有没有直接的方法呢?

编辑回答第一个答案:我想避免使用isempty运算符。

3 个答案:

答案 0 :(得分:5)

您可以在比较中调用all功能

if all(x > 1)
    disp 'yes'
else
    disp 'no'
end

那是因为

>> all([])
ans =
     1
>> all(1)
ans =
     1

您可能需要添加一条评论,说明为什么在标量比较中使用all来代表该代码的未来读者(即使只有您自己)。

答案 1 :(得分:1)

if isempty(x) || x > 1
    disp 'yes'
else
    disp 'no'
end

答案 2 :(得分:1)

您需要同时测试isempty和我们的比较,但在评论中您表明您不愿意直接为许多变量键入isempty。这个怎么样?然后,您只需输入isempty一次。

mycomp = @(x) isempty(x) || x>1;

if mycomp(x)
    disp('yes')
else
    disp('no')
end