The above applet shows the result of a Process Network (PN) executing the QR-algorithm on a continuous stream of data that is coming from an array of antennas. Each execution of the algorithm on a new set of data from the antennas is called an update. The applet shows the matrix R in a MatrixViewer. This matrix is of size NxN, where N is the number of antenna's involved. The individual entries in the matrix are also shown in the Plotter. The matrix R is obtained after doing a certain number of QR-algorithm updates on a stream of data coming from the antenna array of a certain size.
In the demo, if we select 10 QR-updates for an array of 6 antenna's, the following R matrix must be found:
# name: Rout # type: matrix # rows: 6 # columns: 6 270.843 206.234 60.482 -39.318 -89.100 -38.568 0.000 144.933 181.192 172.919 104.333 10.488 0.000 0.000 32.964 18.280 10.909 9.170 0.000 0.000 0.000 24.739 7.446 7.208 0.000 0.000 0.000 0.000 20.30 11.206 0.000 0.000 0.000 0.000 0.000 8.535
The QR algorithm describes a linear algebra problem in which a matrix A can be written as a product of two matrices Q and R (A=QR). The matrix R is an upper triangular matrix and matrix Q is an orthogonal matrix. A program that does this QR transformation is given below in the Matlab programming language. The algorithm uses the Cordic functions Vectorize and Rotate to find the QR transform. If we execute this program in Matlab, we would find the same matrix R.
%% Initialize Matrix r for j = 1:1:N, for i = j:1:N, [r(j,i)] = _ReadMatrix_Zeros_64x64(); end end %% Initialize Matrix x for k = 1:1:K, for j = 1:1:N, [x(k,j)] = _ReadMatrix_U_1000x16(); end end %% do the QR updates for k = 1:1:K, for j = 1:1:N, [r(j,j), x(k,j), t ] = Vectorize( r(j,j), x(k,j) ); for i = j+1:1:N, [r(j,i), x(k,i), t] = Rotate( r(j,i), x(k,i), t ); end end end %% After the K iterations, collect the values of the R Matrix for j = 1:1:N, for i = j:1:N, [ Sink(j,i) ] = Rout( r(j,i) ); end end
However, we can also describe the same QR-algorithm as a Process Network, as shown in the block diagram.