Char внутри функции Matlab - PullRequest
0 голосов
/ 10 марта 2019

Я хочу запустить turnMatrix(30,X) в MATLAB. Я получаю это сообщение об ошибке:

Неопределенная функция или переменная 'X'.

Если я изменю X на 1, это успешно. Мой код ниже.

function turnMatrix(d,b)

a = d * pi / 180 ;

if b == X %  1
    R = [1 0 0 0 ; 0 cos(a) -sin(a) 0 ; 0 sin(a) cos(a) 0 ; 0 0 0 1];

elseif b == Y % 2
    R = [cos(a) 0 sin(a) 0 ; 0 1 0 0 ; -sin(a) 0 cos(a) 0 ; 0 0 0 1];

elseif b == Z % 3
    R = [1 0 0 0 ; 0 cos(a) -sin(a) 0 ; 0 sin(a) cos(a) 0 ; 0 0 0 1];
end

R

end

1 Ответ

0 голосов
/ 10 марта 2019

Похоже, вы действительно ожидаете / хотите указать второй ввод в виде символов / строки, то есть

turnMatrix(30,'X')

Обратите внимание на одинарные кавычки вокруг 'X', которые говорят, что это буквально строка символов 'X', а не значение переменной X.

Тогда внутри нужной вам функции

if b == 'X'

elseif b == 'Y'

elseif b == 'Z'

end

То есть сравнить значение переменной b с символом 'X'. Таким образом, вы пытаетесь сравнить значение переменной b со значением переменной X, но переменная X не существует и, следовательно, ошибка.

Также обратите внимание, что если бы вы сравнивали что-либо, кроме одного символа (и даже в случае одного символа), вам было бы лучше использовать конструкцию switch-case, а не if-else

switch b
   case 'X'

   case 'Y'

   case 'Z'

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