randrot

Равномерно распределенные случайные вращения

Синтаксис

R = randrot
R = randrot(m)
R = randrot(m1,...,mN)
R = randrot([m1,...,mN])

Описание

R = randrot возвращает модульный кватернион, чертивший в равномерное распределение случайных вращений.

пример

R = randrot(m) возвращает m-by-m матрица модульных кватернионов, чертивших от равномерного распределения случайных вращений.

пример

R = randrot(m1,...,mN) возвращает m1...-by-mN массивом случайных модульных кватернионов, где m1, …, mN указывает на размер каждой размерности. Например, randrot(3,4) возвращает матрицу 3 на 4 случайных модульных кватернионов.

R = randrot([m1,...,mN]) возвращает m1...-by-mN массивом случайных модульных кватернионов, где m1, …, mN указывает на размер каждой размерности. Например, randrot([3,4]) возвращает матрицу 3 на 4 случайных модульных кватернионов.

Примеры

свернуть все

Сгенерируйте 3х3 матрицу равномерно распределенных случайных вращений.

r = randrot(3)
r = 

  3×3 quaternion array


      0.71601 - 0.048195i +  0.69548j + 0.036254k     -0.33542 -  0.39466i -  0.84503j +  0.13285k     0.069862 -  0.23387i +  0.96842j + 0.050806k
      0.31625 +  0.20986i +  0.29758j -  0.87601k      0.42409 - 0.047461i +  0.28419j -  0.85856k      0.73316 +  0.35984i +  0.53474j -  0.21687k
      0.16941 +  0.32961i -  0.74097j +  0.56002k      0.42141 +  0.88708i +  0.09635j +  0.16195k      0.52868 +  0.64498i +  0.39167j +   0.3887k

Создайте вектор 500 случайных кватернионов. Используйте rotatepoint, чтобы визуализировать распределение случайных вращений, примененных к точке (1, 0, 0).

q = randrot(500,1);

pt = rotatepoint(q, [1 0 0]);

figure
scatter3(pt(:,1), pt(:,2), pt(:,3))
axis equal

Входные параметры

свернуть все

Размер квадратной матрицы кватерниона, заданной как целочисленное значение. Если m является 0 или отрицательный, то R возвращен как пустая матрица.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Размер каждой размерности, заданной как два или больше целочисленных значения. Если размером какой-либо размерности является 0 или отрицательный, то R возвращен как пустой массив.

Пример: randrot(2,3) возвращается 2 3 матрица случайных кватернионов.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Вектор размера каждой размерности, заданной как вектор - строка из двух или больше целочисленных значений. Если размером какой-либо размерности является 0 или отрицательный, то R возвращен как пустой массив.

Пример: randrot([2,3]) возвращается 2 3 матрица случайных кватернионов.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Случайные кватернионы, возвращенные как кватернион или массив кватернионов.

Типы данных: quaternion

Ссылки

[1] Shoemake, K. "Универсальные Случайные Вращения". Графические Драгоценные камни III (К. Дэвид, редактор). Нью-Йорк: Academic Press, 1992.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2019a