Определите фиксированные точки для комплекса, матрица Q-less QR решает A'AX=B

В этом примере показано, как использовать fixed.complexQlessQRMatrixSolveFixedpointTypes функционируйте, чтобы аналитически определить фиксированные точки для решения комплексного матричного уравнения наименьших квадратов AAX=B, где A m-n матрица с mn, B n-p, и X n-p.

Фиксированные точки для решения матричного уравнения AAX=B хорошо ограничены если количество строк, m, из A очень больше количества столбцов, n т.е. . mn), и A полный ранг. Если A не по сути полный ранг, затем это может быть сделано так путем добавления случайного шума. Случайный шум естественно происходит в физических системах, таких как тепловой шум в радиолокационных системах или системах связи. Если m=n, затем динамический диапазон системы может быть неограниченным, например, в скалярном уравнении x=a/b и a,b[-1,1]то x может быть произвольно большим если b близко к 0.

Задайте системные параметры

Задайте матричные атрибуты и системные параметры для этого примера.

m количество строк в матричном A. В проблеме, такой как beamforming или определение направления, m соответствует количеству отсчетов, которые интегрированы.

m = 300;

n количество столбцов в матричном A и строки в матрицах B и X. В задаче наименьших квадратов, m больше n, и обычно m намного больше, чем n. В проблеме, такой как beamforming или определение направления, n соответствует количеству датчиков.

n = 10;

p количество столбцов в матрицах B и X. Это соответствует одновременному решению системы с p правые стороны.

p = 1;

В этом примере, набор ранг матричного A быть меньше количества столбцов. В проблеме, такой как beamforming или определение направления, rank(A) соответствует количеству сигналов, посягающих на сенсорную матрицу.

rankA = 3;

precisionBits задает количество битов точности, требуемой для матрицы, решают. Установите это значение согласно системным требованиям.

precisionBits = 24;

В этом примере, матрицы с комплексным знаком A и B создаются таким образом, что величина действительных и мнимых частей их элементов меньше чем или равна одному, таким образом, максимальное возможное абсолютное значение любого элемента |1+1i|=2. Ваши собственные системные требования зададут, каковы те значения. Если вы не знаете то, что они, и A и B входные параметры фиксированной точки к системе, затем можно использовать upperbound функция, чтобы определить верхние границы фиксированных точек A и B.

max_abs_A верхняя граница на максимальном элементе массива величины.

max_abs_A = sqrt(2);

max_abs_B верхняя граница на максимальном элементе величины B.

max_abs_B = sqrt(2);

Стандартное отклонение теплового шума является квадратным корнем из степени теплового шума, которая является системным параметром. Хорошо спроектированная система имеет уровень квантования ниже, чем тепловой шум. Здесь, установите thermalNoiseStandardDeviation к эквиваленту -50шумовая мощность дБ.

thermalNoiseStandardDeviation = sqrt(10^(-50/10))
thermalNoiseStandardDeviation = 0.0032

Стандартное отклонение шума квантования является функцией необходимого количества битов точности. Используйте fixed.complexQuantizationNoiseStandardDeviation вычислить это. Смотрите, что это меньше thermalNoiseStandardDeviation.

quantizationNoiseStandardDeviation = fixed.complexQuantizationNoiseStandardDeviation(precisionBits)
quantizationNoiseStandardDeviation = 2.4333e-08

Вычислите фиксированные точки

В этом примере примите что спроектированная системная матрица A не имеет полного ранга (существует меньше сигналов интереса, чем количество столбцов матрицы A), и измеренная системная матрица A имеет аддитивный тепловой шум, который больше, чем шум квантования. Аддитивный шум делает измеренную матрицу A имейте полный ранг.

Набор σnoise=σthermal шум.

noiseStandardDeviation = thermalNoiseStandardDeviation;

Используйте fixed.complexQlessQRMatrixSolveFixedpointTypes функция, чтобы вычислить фиксированные точки.

T = fixed.complexQlessQRMatrixSolveFixedpointTypes(m,n,max_abs_A,max_abs_B,...
    precisionBits,noiseStandardDeviation)
T = struct with fields:
    A: [0x0 embedded.fi]
    B: [0x0 embedded.fi]
    X: [0x0 embedded.fi]

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

T.A
ans = 

[]

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

T.B тип, вычисленный для B так, чтобы это не переполнялось.

T.B
ans = 

[]

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

T.X тип, вычисленный для решения X=(AA)\B так, чтобы была низкая вероятность, что это переполняется.

T.X
ans = 

[]

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

Используйте заданные типы, чтобы решить матричное уравнение A'AX=B

Создайте случайные матрицы A и B таким образом, что rankA=rank(A). Добавьте случайный шум измерения в A который заставит его стать полным рангом.

rng('default');
[A,B] = fixed.example.complexRandomQlessQRMatrices(m,n,p,rankA);
A = A + fixed.example.complexNormalRandomArray(0,noiseStandardDeviation,m,n);

Бросьте входные параметры к типам, определенным fixed.complexQlessQRMatrixSolveFixedpointTypes. Квантование к фиксированной точке эквивалентно добавлению случайного шума.

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

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

fiaccel fixed.qlessQRMatrixSolve -args {A,B,T.X} -o qlessQRMatrixSolve_mex

Задайте выходной тип T.X и вычислите фиксированную точку X=(AA)\B использование метода QR.

X = qlessQRMatrixSolve_mex(A,B,T.X);

Вычислите относительную погрешность, чтобы проверить точность выхода.

relative_error = norm(double(A'*A*X - B))/norm(double(B))
relative_error = 0.1019

Подавите mlint предупреждения в этом файле.

%#ok<*NASGU>
%#ok<*ASGLU>

Смотрите также

Функции

Блоки

Похожие темы

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