Open Signal Coverage Maps for Pakistan

Open Signal is a mobile application that collects the data about your wireless network (2G/3G/4G) and generates coverage maps and host of other reports. The data is collected in the background while the user is busy in his daily routines. But data can also be collected on the request of the user. This is much better than drive testing since the data is collected in real life scenarios and on thousands of different devices that are in use. The app works while the user is indoor or outdoor, at rest or in motion, on land or on water, at sea […]

Read more

BER for BPSK-OFDM in Frequency Selective Channel

As the data rates supported by wireless networks continue to rise the bandwidth requirements also continue to increase (although spectral efficiency has also improved). Remember GSM technology which supported 125 channels of 200KHz each, which was further divided among eight users using TDMA. Move on to LTE where the channel bandwidth could be as high as 20MHz (1.4MHz, 3MHz, 5MHz, 10MHz, 15MHz and 20MHz are standardized). This advancement poses a unique challenge referred to as frequency selective fading. This means that different parts of the signal spectrum would see a different channel (different amplitude and different phase offset). Look at […]

Read more

Rayleigh Fading Envelope Generation – Python

When wireless signals travel from a transmitter to a receiver they do so after reflection, refraction, diffraction and scattering from the environment. Very rarely is there a direct line of sight (LOS) between the transmitter and receiver. Thus multiple time delayed copies of the signal reach the receiver that combine constructively and destructively. In a sense the channel acts as an FIR (finite impulse response) filter. Furthermore since the transmitter or receiver may be in motion the amplitude and phase of these replicas varies with time. There are several methods to model the amplitude and phase of each of these […]

Read more

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