Странный результат с использованием оператора = = `в MATLAB - PullRequest
5 голосов
/ 03 декабря 2010

Я получаю действительно странный результат, используя == в MATLAB_R2009b на OS X. Пример из приглашения:

s =
     2
>> class(s)
ans =
double
>> class(s) == 'double'
ans =
     1     1     1     1     1     1

Шесть раз да?Может кто-нибудь объяснить это ||предложить решение?

1 Ответ

15 голосов
/ 03 декабря 2010

В Matlab строки - это просто массивы символов. То, что вы действительно делаете, сравнивает два массива. Это делает поэлементное сравнение, то есть посимвольное. Таким образом, вы могли бы сделать:

all(class(s) == 'double')

но это дало бы ошибку во время выполнения, если бы длина строки class(s) была не 6. Гораздо безопаснее было бы сделать:

strcmp(class(s), 'double')

Но то, что вы действительно должны делать, это:

isa(s, 'double')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...