Одиночный матричный результат функции 'eul' в цикле 'for' - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь запустить цикл «for», который генерирует N чисел матриц «углов Эйлера», путем случайного выбора углов каждой петли, а затем преобразовать «угол Эйлера» в матрицу 3x3 «угла поворота».Моя проблема заключается в том, что в конце мой результат, кажется, только одна матрица Эйлера и одна матрица вращения, а не N матриц. Мой код выглядит следующим образом, как мой результат может быть 4 матрицы, а не одна?

`for s = 1 : 4;
     Aplha_x(s) = 2 * pi * (rand);

     Aplha_y(s) = 2 * pi * (rand);

     Aplha_z(s) = 2 * pi * (rand);

     eul = [Aplha_z(s) , Aplha_y(s) , Aplha_x(s)];

     rotm = eul2rotm (eul);

end `

1 Ответ

0 голосов
/ 08 декабря 2018

Это потому, что вы переписываете число на каждой итерации.

Вы можете использовать массив ячеек для хранения матрицы для каждой итерации, например:

rotm_array = cell(4,1);

for s = 1 : 4
   Aplha_x(s) = 2 * pi * (rand);

   Aplha_y(s) = 2 * pi * (rand);

   Aplha_z(s) = 2 * pi * (rand);

   eul = [Aplha_z(s) , Aplha_y(s) , Aplha_x(s)];

   rotm = eul2rotm (eul);

   rotm_array{s} = rotm;
end

Отдельныйматрицы могут быть напечатаны с помощью rotm_array {s}:

disp(rotm_array{1});
...