# fixed.qrAB

Compute C = Q'*B and upper-triangular factor R

## Description

example

[C, R] = fixed.qrAB(A, B) computes C = Q'*B and upper-triangular factor R. The function simultaneously performs Givens rotations to A and B to transform A into R and B into C.

This syntax is equivalent to

[C,R] = qr(A,B)

example

[C, R] = fixed.qrAB(A, B, regularizationParameter) computes C and R using a regularization parameter value specified by regularizationParameter. When a regularization parameter is specified, the function simultaneously performs Givens rotations to transform

$\left[\begin{array}{l}\lambda {I}_{n}\\ A\end{array}\right]\to R$

and

$\left[\begin{array}{l}{0}_{n,p}\\ B\end{array}\right]\to C$

where A is an m-by-n matrix, Bis a m-by-p matrix, and λ is the regularization parameter.

This syntax is equivalent to

[Q,R] = qr([regularizationParameter*eye(n); A], 0);
C = Q'[zeros(n,p);B];

## Examples

collapse all

This example shows how to compute the upper-triangular factor $\mathit{R}$, and $\mathit{C}={\mathit{Q}}^{\prime }\mathit{b}$.

Define the input matrices, A, and b.

rng('default');
m = 6;
n = 3;
p = 1;
A = randn(m,n)
A = 6×3

0.5377   -0.4336    0.7254
1.8339    0.3426   -0.0631
-2.2588    3.5784    0.7147
0.8622    2.7694   -0.2050
0.3188   -1.3499   -0.1241
-1.3077    3.0349    1.4897

b = randn(m,p)
b = 6×1

1.4090
1.4172
0.6715
-1.2075
0.7172
1.6302

The fixed.qrAB function returns the upper-triangular factor, $\mathit{R}$, and $\mathit{C}={\mathit{Q}}^{\prime }\mathit{b}$.

[C, R] = fixed.qrAB(A,b)
C = 3×1

-0.3284
0.4055
2.5481

R = 3×3

3.3630   -2.8841   -1.0421
0    4.8472    0.6885
0         0    1.3258

This example shows how to solve a system of linear equations, $\mathit{Ax}=\mathit{b}$, by computing the upper-triangular factor $\mathit{R}$, and $\mathit{C}={\mathit{Q}}^{\prime }\mathit{b}$. A regularization parameter can improve the conditioning of least squares problems, and reduce the variance of the estimates when solving linear systems of equations.

Define input matrices, A, and b.

rng('default');
m = 50;
n = 5;
p = 1;
A = randn(m,n);
b = randn(m,p);

Use the fixed.qrAB function to compute the upper-triangular factor, $\mathit{R}$, and $\mathit{C}={\mathit{Q}}^{\prime }\mathit{b}$.

[C, R] = fixed.qrAB(A, b, 0.01)
C = 5×1

-0.6361
1.7663
1.5892
-2.0638
-0.1327

R = 5×5

9.0631    0.7471    0.4126   -0.3606    0.1883
0    7.2515   -1.1145    0.6011   -0.7544
0         0    7.6132   -0.9460   -0.7062
0         0         0    6.3065   -2.3238
0         0         0         0    5.9297

Use this result to solve $\mathit{Ax}=\mathit{b}$ using x = R\C. Compute x = R\C using the fixed.qrMatrixSolve function.

x = fixed.qrMatrixSolve(R,C)
x = 5×1

-0.1148
0.2944
0.1650
-0.3355
-0.0224

Compare the result to computing x = A\b directly.

x = A\b
x = 5×1

-0.1148
0.2944
0.1650
-0.3355
-0.0224

## Input Arguments

collapse all

Input coefficient matrix, specified as a matrix.

Data Types: single | double | fi
Complex Number Support: Yes

Right-hand side matrix, specified as a matrix.

Data Types: single | double | fi
Complex Number Support: Yes

Regularization parameter, specified as a non-negative scalar. Small, positive values of the regularization parameter can improve the conditioning of the problem and reduce the variance of the estimates. While biased, the reduced variance of the estimate often results in a smaller mean squared error when compared to least-squares estimates.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

## Output Arguments

collapse all

Linear system factor, returned as a matrix that satisfies C = Q'B.

Upper-triangular factor, returned as a matrix that satisfies A = Q*R.