Fourier Transform in Python

Fast Fourier Transform or FFT is a powerful tool to visualize a signal in the frequency domain. Shown below is the FFT of a signal (press the play button) composed of four sinusoids at frequencies of 50Hz, 100Hz, 200Hz and 400Hz. The sampling frequency is set at 1000Hz, more than twice the maximum frequency of the composite signal. The amplitude of the sinusoids diminishes with increasing frequency and this is also reflected in the frequency domain. Play with the code, decrease the frequencies, increase the power, visualize the FFT output on logarithmic scale!

Read more

Alamouti – Transmit Diversity Scheme – Implemented in Python

We have already seen in previous posts that the BER of BPSK increases significantly when the channel changes from a simple AWGN channel to a fading channel. One solution to this problem, that was proposed by Alamouti, was to use Transmit Diversity i.e. multiple transmit antennas transmit the information over multiple time slots increasing the likelihood of receiving the information. We have considered the simplest case of two transmit antennas and BPSK modulation (QPSK modulation would give the same BER with twice the throughput). Given below is the Python code for this, feel free to modify it and run it […]

Read more

Run Python Code from the Browser

Here is a piece of Python code that calculates Bit Error Rate (BER) of BPSK. The code is a bit slow at the moment, compared to MATLAB implementation, but this is work in progress and further optimizations would be carried out. We would like to point out that the main reason for this slower implementation is that a bit by bit error calculation is done, insteadĀ of a vectorial implementation. We already pointed out in our previous post that a “for loop” implemented in Python is not that efficient.

Read more

MATLAB vs Python Computational Speed

Windows Edition Windows 8.1 Pro System Processor Intel(R) Core(TM) i7-5500U CPU @ 2.4GHz Installed Memory 8.00 GB System Type 64 Bit Operating System, x64 Based Processor Integrated Development Environment (IDE) Enthought Canopy Version 2.1.3.3542 (32 bit) Operation Time in sec (MATLAB) Time in sec (PYTHON) 10 million uniform random variable generation 0.10 0.15 10 million normal random variable generation 0.13 0.40 for loop counting up to 100 million 0.40 11.60 Comparing two vectors of length 10 million each 0.39 0.55 Plotting a histogram of 10 million values 0.89 0.76 Plotting a scatter plot of 1 million values 0.30 0.23 Bit […]

Read more

BPSK Bit Error Rate Calculation Using Python

Have you ever thought about how life would be without MATLAB. As it turns out there are free and open source options such as Python. We have so far restricted ourselves to MATLAB in this blog but now we venture out to find out what are the other options. Given below is a most basic Python code that calculates the Bit Error Rate of Binary Phase Shift Keying (BPSK). Compare this to our MATLAB implementation earlier [BPSK BER]. There are various IDEs available for writing your code but I have used Enthought Canopy Editor (32 bit) which is free to […]

Read more