fixed.qlessqrFixedpointTypes

Определите фиксированные точки для преобразования A к оперативному R, где R является верхним треугольным множителем разложения QR A, не вычисляя Q

Описание

пример

T = fixed.qlessqrFixedpointTypes(m,max_abs_A,precisionBits) вычисляет фиксированные точки для преобразования A к оперативному R, где R является верхним треугольным множителем разложения QR A, не вычисляя Q. T возвращен как struct с полем T.A содержа fi объект, который задает фиксированную точку для A, который не гарантирует переполнения, произойдет в QR-алгоритме.

QR-алгоритм преобразовывает A, оперативный в верхне-треугольный R, где Q R =A является разложением QR A.

Примеры

свернуть все

В этом примере показано, как использовать fixed.qlessqrFixedpointTypes аналитически определить фиксированную точку для расчета разложения Q-less QR.

Задайте матричные размерности

Задайте количество строк и столбцов в матрице A.

m = 10; % Number of rows in matrix A
n = 3;  % Number of columns in matrix A

Сгенерируйте матрицу А

Используйте функцию помощника realUniformRandomArray сгенерировать случайную матрицу A таким образом, что элементы A между -1 и +1.

rng('default')
A = fixed.example.realUniformRandomArray(-1,1,m,n);

Выберите Fixed-Point Type

Используйте fixed.qlessqrFixedpointTypes функционируйте, чтобы выбрать тип данных с фиксированной точкой для матрицы A это гарантирует, что никакое переполнение не произойдет в преобразовании A оперативный к R=QA.

max_abs_A = 1;  % Upper bound on max(abs(A(:))
precisionBits = 24;  % Number of bits of precision
T = fixed.qlessqrFixedpointTypes(m,max_abs_A,precisionBits)
T = struct with fields:
    A: [0x0 embedded.fi]

T.A тип, вычисленный для преобразования A к R=QA оперативный так, чтобы это не переполнялось.

T.A
ans = 

[]

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 28
        FractionLength: 24

Используйте заданный тип, чтобы вычислить разложение Q-less QR

Бросьте вход к типу, определенному fixed.qlessqrFixedpointTypes.

A = cast(A,'like',T.A);

Ускорьте fixed.qlessQR при помощи fiaccel сгенерировать исполняемый файл MATLAB (MEX) функция.

fiaccel fixed.qlessQR -args {A} -o qlessQR_mex

Вычислите разложение QR.

R = qlessQR_mex(A);

Проверьте, что R является Верхней треугольной

R верхняя треугольная матрица.

R
R = 
    2.2180    0.8559   -0.5607
         0    2.0578   -0.4017
         0         0    1.7117

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 28
        FractionLength: 24
isequal(R,triu(R))
ans = logical
   1

Проверьте точность Выхода

Оценивать точность fixed.qlessQR функционируйте, вычислите относительную погрешность.

R=QA, и Q является ортогональным, таким образом, RR=AQQA=AA, в погрешности округления.

relative_error = norm(double(R'*R - A'*A))/norm(double(A'*A))
relative_error = 9.0961e-07

Подавите mlint предупреждения.

%#ok<*NOPTS>

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

свернуть все

Количество строк в A в виде положительного скаляра с целочисленным знаком.

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

Максимум абсолютного значения A в виде скаляра.

Пример: max(abs(A(:)))

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

Необходимое количество битов точности в виде положительного скаляра с целочисленным знаком.

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

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

свернуть все

Фиксированная точка для A, возвращенного как struct. Struct T имеет поле T.A это содержит a fi объект, который задает фиксированную точку для A, который не гарантирует переполнения, произойдет в QR-алгоритме.

Алгоритмы

Количество целочисленных битов, требуемых предотвратить переполнение, выведено из следующего, привязал рост R [1]. Необходимое количество целочисленных битов добавляется к количеству битов точности, precisionBits, из входа, плюс один для знакового бита, плюс один бит для промежуточного усиления CORDIC приблизительно 1,6468 [2].

Элементы R ограничены в величине

max(|R(:)|)mmax(|A(:)|).

Ссылки

[2] Voler, Джек Э. "Тригонометрический вычислительный метод CORDIC". Транзакции IRE на электронно-вычислительных машинах EC-8 (1959): 330-334.

Введенный в R2021b
Для просмотра документации необходимо авторизоваться на сайте