These days, multi-antenna transmission and reception systems are practically universal. MIMO is one of the popular types of multi-antenna systems. By enabling numerous orthogonal data streams between the transmitter and receiver (or receivers) , such antennas have the primary advantage of increasing spectral efficiency.

A matrix can be transformed linearly with the aid of SVD. We are aware that when determining an eigenvalue, the formula **Av - Î»v = 0**, is used, where **v** is an eigenvector with a corresponding eigenvalue of. For calculating SVD of a matrix A, firstly we compute A*A^{T} ,then we compute **A*A ^{T} - Î»v = 0**. To minimize the linear operations in a matrix, eigen vectors are used to simplify the matrix equations.

However, eigenvectors need not always be linearly independent (or orthogonal). However, orthogonal data streams are necessary to boost overall throughput and decrease interference between them in order to permit multiple data streams between multi-antenna communication.

In singular value decomposition, you'll get three matrices, U, S, and V. Where U and V are orthonormal eigenvectors of A*A^{T}

and S is a diagonal matrix. U*U^{T }**=**^{ }V*V^{T}^{ }**= **I (identity matrix).

The SVD of matrix A is given by the formula:

**A = USV ^{T}**

Keep in mind that the singular values for matrix **A** will be the squareroots of the obtained eigen values as we compute the eigen values of **A*A ^{T}**.

The aforementioned equations make it evident that the entire received signal will appear as follows if we employ precoding matrix **V **at the transmitter side and post-precoding matrix **U**^{T} at the receiver side.

**y =** **U**^{T }(**USV ^{T}**)

^{ }**Vx = Sx**

Where, S is a diagonal matrix, y is the signal being received, and x is the signal being sent. The multiple data streams between the transmitter and receivers are currently independent and interference-free (theoretically).

## MATLAB Code for Singular Value Decomposition

clc;clear;

close all;

% Define the matrix A

A = [1 2; 3 4];

% Compute the Singular Value Decomposition

[U, S, V] = svd(A);

% Display the results

disp('Matrix A:');

disp(A);

disp('Matrix U:');

disp(U);

disp('Matrix S:');

disp(S);

disp('Matrix V:');

disp(V);

% Verify the decomposition

A_reconstructed = U * S * V';

disp('Reconstructed Matrix A:');

disp(A_reconstructed);

% Compute A^T A

ATA = A' * A;

disp('Matrix A^T A:');

disp(ATA);

% Compute eigenvalues and eigenvectors of A^T A

[eigV, eigD] = eig(ATA);

disp('Eigenvalues of A^T A:');

disp(diag(eigD));

disp('Eigenvectors of A^T A:');

disp(eigV);

% Compute A A^T

AAT = A * A';

disp('Matrix A A^T:');

disp(AAT);

% Compute eigenvalues and eigenvectors of A A^T

[eigU, eigD2] = eig(AAT);

disp('Eigenvalues of A A^T:');

disp(diag(eigD2));

disp('Eigenvectors of A A^T:');

disp(eigU);

## Output

Matrix A:

1 2

3 4

Matrix U:

-0.4046 -0.9145

-0.9145 0.4046

Matrix S:

5.4650 0

0 0.3660

Matrix V:

-0.5760 0.8174

-0.8174 -0.5760

Reconstructed Matrix A:

1.0000 2.0000

3.0000 4.0000

Matrix A^T A:

10 14

14 20

Eigenvalues of A^T A:

0.1339

29.8661

Eigenvectors of A^T A:

-0.8174 0.5760

0.5760 0.8174

Matrix A A^T:

5 11

11 25

Eigenvalues of A A^T:

0.1339

29.8661

Eigenvectors of A A^T:

-0.9145 0.4046

0.4046 0.9145