This repository contains Digital Signal Processing (DSP) algorithms implemented in Python. We begin with the implementation of a basic finite impulse response (FIR) filter using the Least-Squares (LS) estimation method to estimate the filter coefficients.
Least Squares (LS)-based estimation is a method of estimating the frequency response of a discrete-time (DT) system. **The total channel (Tx + Channel + Rx) response can be modeled using a finite impulse response (FIR) filter:
In the above,
Step 2: Preparing the input Convolution Matrix
From the known input samples
-
$$x$$ =$$[x[0], x[1], ..., x[N-1]]^T$$ - For an FIR filter of length
$$L$$ :
In the above, matrix X represents the sliding windows over the input signal used in convolution.
Step 3: Forming the Input-Output Vector The received vector after digitization is aligned with the input vector to match each row of X. The output vector y can be given by: $$ \begin{bmatrix} y[L-1] \ y{L} \ \vdots \ y[N-1] \ \end{bmatrix} $$
Step 4: Least-Squares Solution
- Channel Estimation: estimating the channel impulse response of a multipath wireless channel and performing channel equalization at the receiver for phase, time, and carrier synchronization.
- Channel Equalization: estimating the inverse of the channel response to compensate for interference at the receiver, for example, compensating inter-symbol interference (ISI) in an orthogonal frequency division multiplexing (OFDM) receiver.
- Echo Cancellation: modeling transmitter leakage channel in full-duplex radios simultaneously transmitting and receiving (STAR) at the same frequency band, and cancelling self-interference (SI) signal at the digital baseband.