#matlab #compare #variable-types
#matlab #Сравнить #типы переменных
Вопрос:
У меня есть код Matlab ниже. Переменной «k» могут быть присвоены значения 1, 2, 3 или «N». На основе значения «k» мне нужно выполнить последующие операторы if. Я думал, что Matlab не будет выполнять приведенные ниже инструкции if и возвращать значения k1 = k2 = 0, но он делает что-то другое. Когда я выполняю команду «whos», я вижу, что типы переменных сгенерированы Matlab. Не могли бы вы помочь мне понять, что пытается сделать Matlab? Как еще я могу сравнить / достичь того, что я пытаюсь сделать?
Код Matlab
k = 'N'
k1=0;
k2=0;
if k >= 1
k1 = 1;
end
if k >= 2
k2 = 2;
end
k1
k2
Вывод Matlab
k =
'N'
k1 =
1
k2 =
2
Комментарии:
1.
'N'
является символом . При сравнении с числом этот символ интерпретируется как его ASCII-код, который является78
. Таким образом, обаif
условия «» верны
Ответ №1:
Использование ischar()
функции в качестве проверки
Одним из методов может быть добавление оберточного / внешнего оператора if, чтобы проверить, что k
это не символ (символ), прежде чем оценивать два других внутренних оператора if. Функция ischar()
примет значение «true», если переменная k
(входная) является символом (символом) и false в противном случае. В этом случае мы используем ~
тильду для обозначения отсутствия / дополнения результата. Это инвертирует регистр и ~ischar(k)
будет оцениваться как «true», если переменная k
(входные данные) не является символом (символом). Короче говоря, защитный / внешний оператор if можно прочитать как «Если k
не является символом, продолжайте внутри оператора».
k = 'N';
k1=0;
k2=0;
if ~ischar(k)
if k >= 1
k1 = 1;
end
if k >= 2
k2 = 2;
end
end
k1
k2
Запускался с использованием MATLAB R2019b