在MATLAB中使用`==`运算符的奇怪结果

tro*_*000 5 matlab

==在OS X上使用MATLAB_R2009b 获得了一个非常奇怪的结果.示例来自提示:

s =
     2
>> class(s)
ans =
double
>> class(s) == 'double'
ans =
     1     1     1     1     1     1
Run Code Online (Sandbox Code Playgroud)

六次是吗?任何人都可以解释这个|| 提供解决方案?

Oli*_*rth 15

在Matlab中,字符串实际上只是字符数组.所以你真正在做的是比较两个数组.这进行了元素比较,即逐个字符.所以你可以这样做:

all(class(s) == 'double')
Run Code Online (Sandbox Code Playgroud)

但如果字符串长度class(s)不是6 ,那么会产生运行时错误.更安全的做法是:

strcmp(class(s), 'double')
Run Code Online (Sandbox Code Playgroud)

但你应该做的是:

isa(s, 'double')
Run Code Online (Sandbox Code Playgroud)