我们为什么不使用==在Matlab中比较字符串

时间:2013-10-03 16:20:25

标签: matlab string-comparison

我知道人们普遍认为使用strcmp是比较字符串的正确方法,但我的问题是为什么?根据帮助:

  

A == B在A和B之间进行逐元素比较       并返回一个大小相同的矩阵,其元素设置为逻辑1       其中关系为true,元素设置为逻辑0       不

我能提出的所有玩具示例似乎都有效。

3 个答案:

答案 0 :(得分:7)

==使用逐字符比较,因此尝试使用两个不同长度的字符串来测试与==的相等性应该会给您一个错误。

答案 1 :(得分:7)

strcmp还会检查输入是否为char类,例如strcmp('a',double('a'))返回false,但'a' == double('a')返回true。 strcmp干净地处理空输入,您也不必担心两个字符串长度相同。您可以使用单元格输入轻松比较多个有用的字符串。

字符串比较可能会更慢 - 至少在当前的Matlab中。但是,不要以牺牲可读性和可维护性为代价过早地优化代码。仅在极少数情况下才使用==(或者isequal),当您确实需要表现并且非常确定您要比较的内容时(首先使用ischarisempty ,例如)。

答案 2 :(得分:6)

另一个小例外是空字符串。

在if语句中使用'' == ''求值为false。

strcmp('','')是真的。