вращение 3D-точки вокруг оси Y в Matlab - PullRequest
1 голос
/ 15 сентября 2011

Мне предоставлена ​​матрица вращения для использования:

matrix

и ввели матрицу в мою функцию как

theta = radians(theta);
Ry(theta) = [cos(theta) 0 sin(theta); 0 1 0; -sin(theta) 0 cos(theta)];
newpose = pos*Ry(theta);

все же, когда функция достигает этой стадии, она возвращает ошибку

??? Индексы индексов должны быть либо натуральными натуральными числами, либо логические выражения.

любая помощь высоко ценится

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Проблема в Ry(theta).Назовите его как Ry_theta, если вы хотите, чтобы оно было переменной, или поместите его в реальную функцию.Это должно работать:

theta = radians(theta);
Ry_theta = [cos(theta) 0 sin(theta); 0 1 0; -sin(theta) 0 cos(theta)];
newpose = pos*Ry_theta;

Или - если вы хотите более многоразовое решение:

% in your existing file:
theta = radians(theta);
newpose = pos*rotationAboutYAxis(theta);;

% in a file called rotationAboutYAxis.m:
function Ry = rotationAboutYAxis(theta)
Ry = [cos(theta) 0 sin(theta); 0 1 0; -sin(theta) 0 cos(theta)];
0 голосов
/ 15 сентября 2011
Ry(theta) 

тэта, скорее всего, не является действительным положительным целым числом или логическим.

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