Performance Analysis of Efficient and Low Complexity MIMO-OFDM Using STBC and V-BLAST
Performance Analysis of Efficient and Low Complexity MIMO-OFDM Using STBC and V-BLAST
STBC-OFDM SYSTEM
The proposed scheme has better performances than the standard MIMO-OFDM system.
Besides the performance of this scheme, its complexity is low and there are no needs of
complicate MIMO encoder or channel estimation at the reception. In addition, to the
simplification of the conventional MIMO-OFDM transceiver structure, bandwidth efficiency
can be highly increased In new transmission scheme for MIMO-OFDM, from the pilot data
Transmitted by the receiver end, channel parameters are estimated With the help of channel
coding block to adapt the transmitter signal to the diverse channel impairments and
variations, these estimated parameters are used the new transmission scheme and
conventional MIMO-OFDM graph based on Almouti STBC coding. Better performance
using this than the conventional MIMO-OFDM as shown in this figure shows the variation of
BER as a function of Es/N0. The proposed scheme has better performances than the standard
MIMO-OFDM system. Besides the performance of this scheme, its complexity is low and
there are no needs of complicate MIMO encoder or channel estimation at the reception. In
addition, to the simplification of the conventional MIMO-OFDM transceiver structure,
bandwidth efficiency (also frame efficiency) can be highly increased. The modulation method
in these systems usually is M Quadrature Amplitude Modulation (MQAM). QAM is
combination of phase modulation and amplitude +modulation, making it an efficient method
for transmitting data over a limited bandwidth channel. BLAST's receivers operate co-
channel, each receiving the signals from all the transmitting antennas. VBLAST performs a
non-linear detection that extracts data streams by a ZF (or MMSE) filter w(k) with ordered
successive interference cancellation. Here we use Zero forcing V-Blast detection. The two
main operations of the detection process are interference Suppression and interference
cancellation. The sub-stream are encoded and mapped into symbols and given to a separate
transmitter. Usually M Quadrature Amplitude Modulation (MQAM) is used in these
systems.QAM is a combination of phase modulation and amplitude modulation, which makes
it an efficient method for transmitting data over a limited channel bandwidth. BLAST's
receivers operate co-channel, each receiving the signals from all the transmitting antennas.
Non-linear detection performed by VBLAST that extracts data streams by a ZF (or MMSE)
filter w(k) with ordered successive interference cancellation (OSIC).
MIMO
In radio, multiple-input and multiple-output, or MIMO (/ˈmaɪmoʊ, ˈmiːmoʊ/), is a method for
multiplying the capacity of a radio link using multiple transmission and receiving antennas to
exploit multipath propagation.[1] MIMO has become an essential element of wireless
communication standards including IEEE 802.11n (Wi-Fi), IEEE 802.11ac (Wi-Fi), HSPA+
(3G), WiMAX, and Long Term Evolution (LTE). More recently, MIMO has been applied to
power-line communication for three-wire installations as part of the ITU G.hn standard and
of the HomePlug AV2 specification.[2][3]
At one time, in wireless the term "MIMO" referred to the use of multiple antennas at the
transmitter and the receiver. In modern usage, "MIMO" specifically refers to a practical
technique for sending and receiving more than one data signal simultaneously over the same
radio channel by exploiting multipath propagation. Although this "multipath" phenomena
may be interesting, it's the use of orthogonal frequency division multiplexing to encode the
channels that's responsible for the increase in data capacity. MIMO is fundamentally different
from smart antenna techniques developed to enhance the performance of a single data signal,
such as beamforming and diversity
Early research
MIMO is often traced back to 1970s research papers concerning multi-channel digital
transmission systems and interference (crosstalk) between wire pairs in a cable bundle: AR
Kaye and DA George (1970),[4] Branderburg and Wyner (1974),[5] and W. van Etten (1975,
1976).[6] Although these are not examples of exploiting multipath propagation to send
multiple information streams, some of the mathematical techniques for dealing with mutual
interference proved useful to MIMO development. In the mid-1980s Jack Salz at Bell
Laboratories took this research a step further, investigating multi-user systems operating over
"mutually cross-coupled linear networks with additive noise sources" such as time-division
multiplexing and dually-polarized radio systems.[7]
Methods were developed to improve the performance of cellular radio networks and enable
more aggressive frequency reuse in the early 1990s. Space-division multiple access (SDMA)
uses directional or smart antennas to communicate on the same frequency with users in
different locations within range of the same base station. An SDMA system was proposed by
Richard Roy and Björn Ottersten, researchers at ArrayComm, in 1991. Their US patent (No.
5515378 issued in 1996[8]) describes a method for increasing capacity using "an array of
receiving antennas at the base station" with a "plurality of remote users."
Invention
Arogyaswami Paulraj and Thomas Kailath proposed an SDMA-based inverse multiplexing
technique in 1993. Their US patent (No. 5,345,599 issued in 1994[9]) described a method of
broadcasting at high data rates by splitting a high-rate signal "into several low-rate signals" to
be transmitted from "spatially separated transmitters" and recovered by the receive antenna
array based on differences in "directions-of-arrival." Paulraj was awarded the prestigious
Marconi Prize in 2014 for "his pioneering contributions to developing the theory and
applications of MIMO antennas. ... His idea for using multiple antennas at both the
transmitting and receiving stations – which is at the heart of the current high speed WiFi and
4G mobile systems – has revolutionized high speed wireless."[10]
In an April 1996 paper and subsequent patent, Greg Raleigh proposed that natural multipath
propagation can be exploited to transmit multiple, independent information streams using co-
located antennas and multi-dimensional signal processing.[11] The paper also identified
practical solutions for modulation (MIMO-OFDM), coding, synchronization, and channel
estimation. Later that year (September 1996) Gerard J. Foschini submitted a paper that also
suggested it is possible to multiply the capacity of a wireless link using what the author
described as "layered space-time architecture."[12]
Greg Raleigh, V. K. Jones, and Michael Pollack founded Clarity Wireless in 1996, and built
and field-tested a prototype MIMO system.[13] Cisco Systems acquired Clarity Wireless in
1998.[14] Bell Labs built a laboratory prototype demonstrating its V-BLAST (Vertical-Bell
Laboratories Layered Space-Time) technology in 1998.[15] Arogyaswami Paulraj founded
Iospan Wireless in late 1998 to develop MIMO-OFDM products. Iospan was acquired by
Intel in 2003.[16] V-BLAST was never commercialized, and neither Clarity Wireless nor
Iospan Wireless shipped MIMO-OFDM products before being acquired.[17]
The first 4G cellular standard was proposed by NTT DoCoMo in 2004.[28] Long term
evolution (LTE) is based on MIMO-OFDM and continues to be developed by the 3rd
Generation Partnership Project (3GPP). LTE specifies downlink rates up to 300 Mbit/s,
uplink rates up to 75 Mbit/s, and quality of service parameters such as low latency.[29] LTE
Advanced adds support for picocells, femtocells, and multi-carrier channels up to 100 MHz
wide. LTE has been embraced by both GSM/UMTS and CDMA operators.[30]
The first LTE services were launched in Oslo and Stockholm by TeliaSonera in 2009.[31]
There are currently more than 360 LTE networks in 123 countries operational with
approximately 373 million connections (devices).[32]
Functions
MIMO can be sub-divided into three main categories: precoding, spatial multiplexing (SM),
and diversity coding.
Diversity coding techniques are used when there is no channel knowledge at the transmitter.
In diversity methods, a single stream (unlike multiple streams in spatial multiplexing) is
transmitted, but the signal is coded using techniques called space-time coding. The signal is
emitted from each of the transmit antennas with full or near orthogonal coding. Diversity
coding exploits the independent fading in the multiple antenna links to enhance signal
diversity. Because there is no channel knowledge, there is no beamforming or array gain from
diversity coding. Diversity coding can be combined with spatial multiplexing when some
channel knowledge is available at the receiver.
Multi-antenna types
Multi-antenna MIMO (or single-user MIMO) technology has been developed and
implemented in some standards, e.g., 802.11n products.
Spatial multiplexing techniques make the receivers very complex, and therefore they are
typically combined with Orthogonal frequency-division multiplexing (OFDM) or with
Orthogonal Frequency Division Multiple Access (OFDMA) modulation, where the problems
created by a multi-path channel are handled efficiently. The IEEE 802.16e standard
incorporates MIMO-OFDMA. The IEEE 802.11n standard, released in October 2009,
recommends MIMO-OFDM.
MIMO is also planned to be used in Mobile radio telephone standards such as recent 3GPP
and 3GPP2. In 3GPP, High-Speed Packet Access plus (HSPA+) and Long Term Evolution
(LTE) standards take MIMO into account. Moreover, to fully support cellular environments,
MIMO research consortia including IST-MASCOT propose to develop advanced MIMO
techniques, e.g., multi-user MIMO (MU-MIMO).
Maximum likelihood detection is a non-linear technique. The bit error rate results of ML are
better than MMSE detector at the cost of additional complexity [6]. So Maximum likelihood
From the above receiver structures, we saw that MMSE equalisation with optimally
ordered Successive Interference Cancellation gave the best performance. In this post, we
will discuss another receiver structure called Maximum Likelihood (ML) decoding which
gives us an even better performance. We will assume that the channel is a flat
fading Rayleigh multipath channel and the modulation is BPSK.
MIMO channel
In a MIMO channel, probable usage of the available 2 transmit antennas can be as follows:
2. In normal transmission, we will be sending in the first time slot, in the second time
slot, and so on.
3. However, as we now have 2 transmit antennas, we may group the symbols into groups of
two. In the first time slot, send and from the first and second antenna. In second time
slot, send and from the first and second antenna, send and in the third time
slot and so on.
4. Notice that as we are grouping two symbols and sending them in one time slot, we need
where
, are the received symbol on the first and second antenna respectively,
We assume that the receiver knows , , and . The receiver also knows
and . The unknown s are and .
For convenience, the above equation can be represented in matrix notation as follows:
Equivalently,
Other Assumptions
1. The channel is flat fading – In simple terms, it means that the multipath channel has only
one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous
discussion on flat fading and frequency selective fading, may I urge you to review Chapter
15.3 Signal Time-Spreading from [DIGITAL COMMUNICATIONS: SKLAR]
2. The channel experience by each transmit antenna is independent from the channel
experienced by other transmit antennas.
3. For the transmit antenna to receive antenna, each transmitted symbol gets
is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having
4. The channel experienced between each transmit to the receive antenna is independent and
randomly varying in time.
5. On the receive antenna, the noise has the Gaussian probability density function with
with and .
Since the modulation is BPSK, the possible values of is +1 or -1 Similarly also take
values +1 or -1. So, to find the Maximum Likelihood solution, we need to find the minimum
from the all four combinations of and .
The estimate of the transmit symbol is chosen based on the minimum value from the above
four values i.e
VBLAST
On applying V-BLAST algorithm to ML, the performance will be better than Maximum
likelihood detector. There are two main steps of detection process. We use Zero forcing V-
Blast detection operations interference Suppression (Nulling) and interference cancellation
(Subtraction).
Fig.: VBlast System
2. In normal transmission, we will be sending in the first time slot, in the second time
slot, and so on.
3. However, as we now have 2 transmit antennas, we may group the symbols into groups of
two. In the first time slot, send and from the first and second antenna. In second time
slot, send and from the first and second antenna, send and in the third time
slot and so on.
4. Notice that as we are grouping two symbols and sending them in one time slot, we need
Other Assumptions
1. The channel is flat fading – In simple terms, it means that the multipath channel has only
one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous
discussion on flat fading and frequency selective fading, may I urge you to review Chapter
15.3 Signal Time-Spreading from [DIGITAL COMMUNICATIONS: SKLAR]
2. The channel experience by each transmit antenna is independent from the channel
experienced by other transmit antennas.
3. For the transmit antenna to receive antenna, each transmitted symbol gets
is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having
4. The channel experienced between each transmit to the receive antenna is independent and
randomly varying in time.
5. On the receive antenna, the noise has the Gaussian probability density function with
with and .
Minimum Mean Square Error (MMSE) equalizer for 2×2 MIMO channel
Let us now try to understand the math for extracting the two symbols which interfered with
each other. In the first time slot, the received signal on the first receive antenna is,
where
, are the received symbol on the first and second antenna respectively,
Equivalently,
Solving,
When comparing to the equation in Zero Forcing equalizer, apart from the term both
the equations are comparable. Infact, when the noise term is zero, the MMSE equalizer
reduces to Zero Forcing equalizer
ZERO FORCING
Zero Forcing is a linear detection technique. The pseudo inverse of the signal is applied to the
received signal in order to make a decision about one user. So the equation for filter matrix G
for zero forcing will be, In this way the received signal is detected by zero forcing detectors.
If V-BLAST algorithm is applied to ZF detector, the performance comparison of ZF and ZF-
VBLAST analyzed. It is evident from the figure that the ZF with V-BLAST shows better
performance than the normal ZF in terms of bit error rate ( BER) verses SNR.
Fig: Block Diagram of a 2X2 MIMO-OFDM System
We will assume that the channel is a flat fading Rayleigh multipath channel and the
modulation is BPSK.
In a 2×2 MIMO channel, probable usage of the available 2 transmit antennas can be as
follows:
2. In normal transmission, we will be sending in the first time slot, in the second time
slot, and so on.
3. However, as we now have 2 transmit antennas, we may group the symbols into groups of
two. In the first time slot, send and from the first and second antenna. In second time
slot, send and from the first and second antenna, send and in the third time
slot and so on.
4. Notice that as we are grouping two symbols and sending them in one time slot, we need
Other Assumptions
1. The channel is flat fading – In simple terms, it means that the multipath channel has only
one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous
discussion on flat fading and frequency selective fading, may I urge you to review Chapter
15.3 Signal Time-Spreading from [DIGITAL COMMUNICATIONS: SKLAR]
2. The channel experience by each transmit antenna is independent from the channel
experienced by other transmit antennas.
3. For the transmit antenna to receive antenna, each transmitted symbol gets
is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having
4. The channel experienced between each transmit to the receive antenna is independent and
randomly varying in time.
5. On the receive antenna, the noise has the Gaussian probability density function with
with and .
System Model
The received signal on the first receive antenna is,
where
, are the received symbol on the first and second antenna respectively,
We assume that the receiver knows , , and . The receiver also knows
and . The unknown s are and . Two equations and two unknowns. Can we solve
it? Answer is YES.
For convenience, the above equation can be represented in matrix notation as follows:
Equivalently,
MIMO channel, probable usage of the available 2 transmit antennas can be as follows:
2. In normal transmission, we will be sending in the first time slot, in the second time
slot, and so on.
3. However, as we now have 2 transmit antennas, we may group the symbols into groups of
two. In the first time slot, send and from the first and second antenna. In second time
slot, send and from the first and second antenna, send and in the third time
slot and so on.
4. Notice that as we are grouping two symbols and sending them in one time slot, we need
Having said this, some of you will wonder – the two transmitted symbols interfered with each
other. Can we ever separate the two out? The rest of the post attempts to answer this
question.
Figure: 2 Transmit 2 Receive (2×2) MIMO channel
Other Assumptions
1. The channel is flat fading – In simple terms, it means that the multipath channel has only
one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous
discussion on flat fading and frequency selective fading, may I urge you to review Chapter
15.3 Signal Time-Spreading from [DIGITAL COMMUNICATIONS: SKLAR]
2. The channel experience by each transmit antenna is independent from the channel
experienced by other transmit antennas.
3. For the transmit antenna to receive antenna, each transmitted symbol gets
is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having
4. The channel experienced between each transmit to the receive antenna is independent and
randomly varying in time.
5. On the receive antenna, the noise has the Gaussian probability density function with
with and .
Let us now try to understand the math for extracting the two symbols which interfered with
each other. In the first time slot, the received signal on the first receive antenna is,
.
The received signal on the second receive antenna is,
where
, are the received symbol on the first and second antenna respectively,
We assume that the receiver knows , , and . The receiver also knows
and . The unknown s are and . Two equations and two unknowns. Can we solve
it? Answer is YES.
For convenience, the above equation can be represented in matrix notation as follows:
Equivalently,
Note that the off diagonal terms in the matrix are not zero (Recall: The off
diagonal terms where zero in Alamouti 2×1 STBC case). Because the off diagonal terms are
not zero, the zero forcing equalizer tries to null out the interfering terms when performing the
equalization, i.e when solving for the interference from is tried to be nulled and vice
versa. While doing so, there can be amplification of noise. Hence Zero Forcing equalizer is
not the best possible equalizer to do the job. However, it is simple and reasonably easy to
implement.
Further, it can be seen that, following zero forcing equalization, the channel for symbol
transmitted from each spatial dimension (space is antenna) is a like a 1×1 Rayleigh fading
channel (Refer Section 3.3 of [WIRELESS-TSE, VISWANATH]). Hence the BER for 2×2
MIMO channel in Rayleigh fading with Zero Forcing equalization is same as the BER
derived for a 1×1 channel in Rayleigh fading.
For BPSK modulation in Rayleigh fading channel, the bit error rate is derived as,
.
Software introduction:
INTRODUCTION
What Is MATLAB?
MATLAB has evolved over a period of years with input from many users. In
university environments, it is the standard instructional tool for introductory and advanced
courses in mathematics, engineering, and science. In industry, MATLAB is the tool of choice
for high-productivity research, development, and analysis.
Development Environment. This is the set of tools and facilities that help you use
MATLAB functions and files. Many of these tools are graphical user interfaces. It includes
the MATLAB desktop and Command Window, a command history, and browsers for
viewing help, the workspace, files, and the search path.
DEVELOPMENT ENVIRONMENT
Introduction
Starting MATLAB
You can change the directory in which MATLAB starts, define startup options including
running a script upon startup, and reduce startup time in some situations.
Quitting MATLAB
To end your MATLAB session, select Exit MATLAB from the File menu in
the desktop, or type quit in the Command Window. To execute specified functions each time
MATLAB quits, such as saving the workspace, you can create and run a finish.m script.
MATLAB Desktop
When you start MATLAB, the MATLAB desktop appears, containing tools
(graphical user interfaces) for managing files, variables, and applications associated with
MATLAB.
The first time MATLAB starts, the desktop appears as shown in the following
illustration, although your Launch Pad may contain different entries.
You can change the way your desktop looks by opening, closing, moving, and
resizing the tools in it. You can also move tools outside of the desktop or return them back
inside the desktop (docking). All the desktop tools provide common features such as context
menus and keyboard shortcuts.
You can specify certain characteristics for the desktop tools by selecting
Preferences from the File menu. For example, you can specify the font characteristics for
Command Window text. For more information, click the Help button in the Preferences
dialog box.
Desktop Tools
Use the Command Window to enter variables and run functions and M-
files.
Command History
Lines you enter in the Command Window are logged in the Command History
window. In the Command History, you can view previously used functions, and copy and
execute selected lines. To save the input and output from a MATLAB session to a file, use
the diary function.
You can run external programs from the MATLAB Command Window.
The exclamation point character! is a shell escape and indicates that the rest of the input line
is a command to the operating system. This is useful for invoking utilities or running other
programs without quitting MATLAB. On Linux, for example,!emacs magik.m invokes an
editor called emacs for a file named magik.m. When you quit the external program, the
operating system returns control to MATLAB.
Launch Pad
Help Browser
Use the Help browser to search and view documentation for all your Math
Works products. The Help browser is a Web browser integrated into the MATLAB desktop
that displays HTML documents.
To open the Help browser, click the help button in the toolbar, or type
helpbrowser in the Command Window. The Help browser consists of two panes, the Help
Navigator, which you use to find information, and the display pane, where you view the
information.
Help Navigator
Product filter - Set the filter to show documentation only for the products you specify.
Contents tab - View the titles and tables of contents of documentation for your products.
Index tab - Find specific index entries (selected keywords) in the MathWorks
documentation for your products.
Search tab - Look for a specific phrase in the documentation. To get help for a specific
function, set the Search type to Function Name.
Display Pane
Browse to other pages - Use the arrows at the tops and bottoms of the pages, or use the
back and forward buttons in the toolbar.
Find a term in the page - Type a term in the Find in page field in the toolbar and click
Go.
Search Path
To determine how to execute functions you call, MATLAB uses a search path
to find M-files and other MATLAB-related files, which are organized in directories on your
file system. Any file you want to run in MATLAB must reside in the current directory or in a
directory that is on the search path. By default, the files supplied with MATLAB and
MathWorks toolboxes are included in the search path.
Workspace Browser
To view the workspace and information about each variable, use the
Workspace browser, or use the functions who and whos.
To delete variables from the workspace, select the variable and select Delete
from the Edit menu. Alternatively, use the clear function.
The workspace is not maintained after you end the MATLAB session. To save
the workspace to a file that can be read during a later MATLAB session, select Save
Workspace As from the File menu, or use the save function. This saves the workspace to a
binary file called a MAT-file, which has a .mat extension. There are options for saving to
different formats. To read in a MAT-file, select Import Data from the File menu, or use the
load function.
Array Editor
Editor/Debugger
Use the Editor/Debugger to create and debug M-files, which are programs
you write to runMATLAB functions. The Editor/Debugger provides a graphical user
interface for basic text editing, as well as for M-file debugging.
You can use any text editor to create M-files, such as Emacs, and can use
preferences (accessible from the desktop File menu) to specify that editor as the default. If
you use another editor, you can still use the MATLAB Editor/Debugger for debugging, or
you can use debugging functions, such as dbstop, which sets a breakpoint.
If you just need to view the contents of an M-file, you can display it in the
Command Window by using the type function.
MANIPULATING MATRICES
Entering Matrices
The best way for you to get started with MATLAB is to learn how to handle
matrices. Start MATLAB and follow along with each example.
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
This exactly matches the numbers in the engraving. Once you have entered the matrix, it is
automatically remembered in the MATLAB workspace. You can refer to it simply as A.
Expressions
Variables
Numbers
Operators
Functions
Variables
num_students = 25
Creates a 1-by-1 matrix named num_students and stores the value 25 in its single element.
3 -99 0.0001
1i -3.14159j 3e5i
All numbers are stored internally using the long format specified by the IEEE
floating-point standard. Floating-point numbers have a finite precision of roughly 16
significant decimal digits and a finite range of roughly 10-308 to 10+308.
Operators
+ Addition
- Subtraction
* Multiplication
/ Division
\ Left division (described in "Matrices and Linear
Algebra" in Using MATLAB)
^ Power
' Complex conjugate transpose
() Specify evaluation order
Functions
help elfun
help specfun
help elmat
Some of the functions, like sqrt and sin, are built-in. They are part of the
MATLAB core so they are very efficient, but the computational details are not readily
accessible. Other functions, like gamma and sinh, are implemented in M-files. You can see
the code and even modify it if you want. Several special functions provide values of useful
constants.
Pi 3.14159265...
i Imaginary unit, √-1
I Same as i
Eps Floating-point relative precision, 2-52
Realmin Smallest floating-point number, 2-1022
Realmax Largest floating-point number, (2- ε)21023
Inf Infinity
NaN Not-a-number
GUI
A graphical user interface (GUI) is a user interface built with graphical
objects, such as buttons, text fields, sliders, and menus. In general, these objects already have
meanings to most computer users. For example, when you move a slider, a value changes;
when you press an OK button, your settings are applied and the dialog box is dismissed. Of
course, to leverage this built-in familiarity, you must be consistent in how you use the various
GUI-building components.
Applications that provide GUIs are generally easier to learn and use since the
person using the application does not need to know what commands are available or how
they work. The action that results from a particular user action can be made clear by the
design of the interface.
The sections that follow describe how to create GUIs with MATLAB. This
includes laying out the components, programming them to do specific things in response to
user actions, and saving and launching the GUI; in other words, the mechanics of creating
GUIs. This documentation does not attempt to cover the "art" of good user interface design,
which is an entire field unto itself. Topics covered in this section include:
While it is possible to write an M-file that contains all the commands to lay
out a GUI, it is easier to use GUIDE to lay out the components interactively and to generate
two files that save and launch the GUI:
A FIG-file - contains a complete description of the GUI figure and all of its
children (uicontrols and axes), as well as the values of all object properties.
An M-file - contains the functions that launch and control the GUI and the
Note that the application M-file does not contain the code that lays out the
uicontrols; this information is saved in the FIG-file.
The M-file contains code to implement a number of useful features (see Configuring
Application Options for information on these features). The M-file adopts an effective
approach to managing object handles and executing callback routines (see Creating and
Storing the Object Handle Structure for more information). The M-files provides a way to
manage global data (see Managing GUI Data for more information).
The automatically inserted subfunction prototypes for callbacks ensure compatibility with
future releases. For more information, see Generating Callback Function Prototypes for
information on syntax and arguments.
You can elect to have GUIDE generate only the FIG-file and write the application M-file
yourself. Keep in mind that there are no uicontrol creation commands in the application M-
file; the layout information is contained in the FIG-file generated by the Layout Editor.
Selecting GUIDE Application Options - set both FIG-file and M-file options.
When MATLAB creates a graph, the figure and axes are included in the list of
children of their respective parents and their handles are available through commands such as
findobj, set, and get. If you issue another plotting command, the output is directed to the
current figure and axes.
GUIs are also created in figure windows. Generally, you do not want GUI
figures to be available as targets for graphics output, since issuing a plotting command could
direct the output to the GUI figure, resulting in the graph appearing in the middle of the GUI.
In contrast, if you create a GUI that contains an axes and you want commands
entered in the command window to display in this axes, you should enable command-line
access.
Push Buttons
Sliders
Toggle Buttons
Frames
Radio Buttons
Listboxes
Checkboxes
Popup Menus
Edit Text
Axes
Static Text
Figures
Push Buttons
Push buttons generate an action when pressed (e.g., an OK button may close a
dialog box and apply settings). When you click down on a push button, it appears depressed;
when you release the mouse, the button's appearance returns to its nondepressed state; and its
callback executes on the button up event.
Properties to Set
String - set this property to the character string you want displayed on the push button.
Tag - GUIDE uses the Tag property to name the callback subfunction in the application
M-file. Set Tag to a descriptive name (e.g., close_button) before activating the GUI.
When the user clicks on the push button, its callback executes. Push buttons
do not return a value or maintain a state.
Toggle Buttons
Toggle buttons generate an action and indicate a binary state (e.g., on or off).
When you click on a toggle button, it appears depressed and remains depressed when you
release the mouse button, at which point the callback executes. A subsequent mouse click
returns the toggle button to the nondepressed state and again executes its callback.
The callback routine needs to query the toggle button to determine what state
it is in. MATLAB sets the Value property equal to the Max property when the toggle button
is depressed (Max is 1 by default) and equal to the Min property when the toggle button is not
depressed (Min is 0 by default).
The following code illustrates how to program the callback in the GUIDE
application M-file.
if button_state == get(h,'Max')
end
Assign the CData property an m-by-n-by-3 array of RGB values that define a
truecolor image. For example, the array a defines 16-by-128 truecolor image using random
values between 0 and 1 (generated by rand).
a(:,:,1) = rand(16,128);
a(:,:,2) = rand(16,128);
a(:,:,3) = rand(16,128);
set(h,'CData',a)
Radio Buttons
Radio buttons have two states - selected and not selected. You can query and
set the state of a radio button through its Value property:
To make radio buttons mutually exclusive within a group, the callback for
each radio button must set the Value property to 0 on all other radio buttons in the group.
MATLAB sets the Value property to 1 on the radio button clicked by the user.
function mutual_exclude(off)
set(off,'Value',0)
The handles of the radio buttons are available from the handles structure,
which contains the handles of all components in the GUI. This structure is an input argument
to all radio button callbacks.
The following code shows the call to mutual_exclude being made from the
first radio button's callback in a group of four radio buttons.
off = [handles.radiobutton2,handles.radiobutton3,handles.radiobutton4];
mutual_exclude(off)
After setting the radio buttons to the appropriate state, the callback can
continue with its implementation-specific tasks.
Checkboxes
Check boxes generate an action when clicked and indicate their state as
checked or not checked. Check boxes are useful when providing the user with a number of
independent choices that set a mode (e.g., display a toolbar or generate callback function
prototypes).
The Value property indicates the state of the check box by taking on the value
of the Max or Min property (1 and 0 respectively by default):
You can determine the current state of a check box from within its callback by
querying the state of its Value property, as illustrated in the following example:
function checkbox1_Callback(h,eventdata,handles,varargin)
if (get(h,'Value') == get(h,'Max'))
else
end
Edit Text
Edit text controls are fields that enable users to enter or modify text strings.
Use edit text when you want text as input. The String property contains the text entered by
the user.
To obtain the string typed by the user, get the String property in the callback.
function edittext1_Callback(h,eventdata, handles,varargin)
user_string = get(h,'string');
MATLAB returns the value of the edit text String property as a character
string. If you want users to enter numeric values, you must convert the characters to numbers.
You can do this using the str2double command, which converts strings to doubles. If the user
enters non-numeric characters, str2double returns NaN.
You can use the following code in the edit text callback. It gets the value of
the String property and converts it to a double. It then checks if the converted value is NaN,
indicating the user entered a non-numeric character (isnan) and displays an error dialog
(errordlg).
function edittext1_Callback(h,eventdata,handles,varargin)
user_entry = str2double(get(h,'string'));
if isnan(user_entry)
end
On UNIX systems, clicking on the menubar of the figure window causes the
edit text callback to execute. However, on Microsoft Windows systems, if an editable text
box has focus, clicking on the menubar does not cause the editable text callback routine to
execute. This behavior is consistent with the respective platform conventions. Clicking on
other components in the GUI execute the callback.
Static Text
Static text controls displays lines of text. Static text is typically used to label
other controls, provide directions to the user, or indicate values associated with a slider. Users
cannot change static text interactively and there is no way to invoke the callback routine
associated with it.
Frames
Frames are boxes that enclose regions of a figure window. Frames can make a
user interface easier to understand by visually grouping related controls. Frames have no
callback routines associated with them and only uicontrols can appear within frames (axes
cannot).
Frames are opaque. If you add a frame after adding components that you want
to be positioned within the frame, you need to bring forward those components. Use the
Bring to Front and Send to Back operations in the Layout menu for this purpose.
List Boxes
List boxes display a list of items and enable users to select one or more items.
The String property contains the list of strings displayed in the list box. The
first item in the list has an index of 1.
The Value property contains the index into the list of strings that correspond to
the selected item. If the user selects multiple items, then Value is a vector of indices.
By default, the first item in the list is highlighted when the list box is first
displayed. If you do not want any item highlighted, then set the Value property to empty, [].
The ListboxTop property defines which string in the list displays as the top
most item when the list box is not large enough to display all list entries. ListboxTop is an
index into the array of strings defined by the String property and must have a value between 1
and the number of strings. Noninteger values are fixed to the next lowest integer.
The values of the Min and Max properties determine whether users can make
single or multiple selections:
If Max - Min > 1, then list boxes allow multiple item selection.
If Max - Min <= 1, then list boxes do not allow multiple item selection.
Selection Type
Listboxes differentiate between single and double clicks on an item and set the
figure SelectionType property to normal or open accordingly. See Triggering Callback
Execution for information on how to program multiple selection.
MATLAB evaluates the list box's callback after the mouse button is released
or a keypress event (including arrow keys) that changes the Value property (i.e., any time the
user clicks on an item, but not when clicking on the list box scrollbar). This means the
callback is executed after the first click of a double-click on a single item or when the user is
making multiple selections.
In these situations, you need to add another component, such as a Done button
(push button) and program its callback routine to query the list box Value property (and
possibly the figure SelectionType property) instead of creating a callback for the list box. If
you are using the automatically generated application M-file option, you need to either:
Set the list box Callback property to the empty string ('') and remove the
callback subfunction from the application M-file. Leave the callback subfunction stub in the
application M-file so that no code executes when users click on list box items.
The first choice is best if you are sure you will not use the list box callback
and you want to minimize the size and efficiency of the application M-file. However, if you
think you may want to define a callback for the list box at some time, it is simpler to leave the
callback stub in the M-file.
Popup Menus
Popup menus open to display a list of choices when users press the arrow.
The String property contains the list of string displayed in the popup menu.
The Value property contains the index into the list of strings that correspond to the selected
item.
When not open, a popup menu displays the current choice, which is
determined by the index contained in the Value property. The first item in the list has an
index of 1.
Popup menus are useful when you want to provide users with a number of
mutually exclusive choices, but do not want to take up the amount of space that a series of
radio buttons requires.
You can program the popup menu callback to work by checking only the
index of the item selected (contained in the Value property) or you can obtain the actual
string contained in the selected item.
This callback checks the index of the selected item and uses a switch
statement to take action based on the value. If the contents of the popup menu is fixed, then
you can use this approach.
val = get(h,'Value');
switch val
case 1
case 2
% etc.
This callback obtains the actual string selected in the popup menu. It uses the
value to index into the list of strings. This approach may be useful if your program
dynamically loads the contents of the popup menu based on user action and you need to
obtain the selected string. Note that it is necessary to convert the value returned by the String
property from a cell array to a string.
val = get(h,'Value');
string_list = get(h,'String');
% etc.
You can control whether a control responds to mouse button clicks by setting
the Enable property. Controls have three states:
off - The control is disabled and its label (set by the string property) is
grayed out.
inactive - The control is disabled, but its label is not grayed out.
When a control is disabled, clicking on it with the left mouse button does not
execute its callback routine. However, the left-click causes two other callback routines to
execute:
Axes
Axes enable your GUI to display graphics (e.g., graphs and images). Like
all graphics objects, axes have properties that you can set to control many aspects of its
behavior and appearance. See Axes Properties for general information on axes objects.
Axes Callbacks
Axes are not uicontrol objects, but can be programmed to execute a callback
when users click a mouse button in the axes. Use the axes ButtonDownFcn property to define
the callback.
GUIs that contain axes should ensure the Command-line accessibility option
in the Application Options dialog is set to Callback (the default). This enables you to issue
plotting commands from callbacks without explicitly specifying the target axes.
If a GUI has multiple axes, you should explicitly specify which axes you
want to target when you issue plotting commands. You can do this using the axes command
and the handles structure. For example,
axes(handles.axes1)
makes the axes whose Tag property is axes1 the current axes, and therefore the target for
plotting commands. You can switch the current axes whenever you want to target a different
axes. See GUI with Multiple Axes for and example that uses two axes.
Figure
Figures are the windows that contain the GUI you design with the Layout
Editor. See the description of figure properties for information on what figure characteristics
you can control.
CONCLUSION
This paper analyzed the performance of V-BLAST on different detection techniques and
compared them on the basis of bit error rate/signal to noise ratio and resulted better
performance with lesser complexity. We have analyzed that 2X2 MIMO-OFDM Channel
with Binary phase shift keying( BPSK) modulation and various detection techniques are
applied along with VBLAST algorithm and their performance is compared on the basis of bit
error rate per signal to noise ratio (BER/SNR). The simulation result shows that when the
detection techniques are applied with V-BLAST, they show better results even for higher
values of SNR. Figure 8 shows the performance comparison of all detection techniques
without and with V-BLAST. This figure(8) shows that we can obtain close to ML
performance with less complexity by applying V-BLAST algorithm on linear detection
techniques and also if we require a system with performance better than ML then we can also
apply V-BLAST on ML. The performance of V-BLAST and STBC on MIMO-OFDM is also
analyzed. VBLAST is superior regarding spectral efficiency and bit error rate.
REFERENCES
[1] Alamouti S.M., A simple transmit diversity technique for wireless communications, IEEE
J. Select Areas Communications., vol. 16, pp.1451–1458, Oct. 1998.
[2] WintersJ. H., The diversity gain of transmit diversity in wireless systems with Rayleigh
fading,IEEE Int.Conf. Communications,vol. 2, pp. 1121–1125, 1998.
[3] Tian-Ming Ma, Yu-Song Shi, and Ying-Guan Wang,“A Low Complexity MMSE for
OFDM Systems overFrequency-Selective Fading Channels”, IEEE Communications Letters,
vol.-16, no.-3, March 2012.
[4] D. Gesbert, M. Shafi, Da-shan Shiu, P. J. Smith, A. Naguib, “From theory to practice: an
overview of MIMO space-time coded wireless systems”, Selected Areas in Communications,
IEEE Journal, vol.-21, pp. 281-302, April 2003.
[5] Kai Yu and Bjorn Ottersten, “Models for MIMO Propagation Channels, A Review”, in
Special Issue on “Adaptive Antennas and MIMO Systems”, Wiley Journal on Wireless
Comm. and Mobile Computing, vol.-2, Issue 7, pp. 653-666, November 2002
[6] T.Y Al-Naffouri, K.M.Z. Islam, N. Al-Dhahir, S. Lu, “A Model Reduction Approach for
OFDM Channel Estimation Under High Mobility Conditions ”, Transaction on Signal
Processing, Vol. 58, No. 6, pp. 3360–3372, June 2010.
[7] Felip R.P, Improved linear group detection for combined spatial multiplexing/STBC
system, IEEE Transactions On Commun, vol. 57, 2009.
[8] Jayalakshmy.S, Performance, Analysis and Efficient Transmission over Multiple Wireless
Channels using V-Blast Architecture, CIS Journal, Special issue pp 11, 2011.
[9] MurthyN.S, GowriS.Sri, and Saileela J.N.V., Transmit diversity techniques for wireless
communication over Rayleighchannels using 16 QAM Modulation schemes,Springer, pp.
127-137,2011
[10] Mao T, Motani M (2005) STBC-VBLAST for MIMO Wireless Communication
Systems. Proc IEEE ICC (ICC 2005) 4:2266–2270 IEEE Transaction on Signal Processing,
Vol. 58, No. 4, pp. 2181– 2193, April 2010.
[11] C.Chung, “Spectral precoding for constant-envelope OFDM”, IEEE Transaction on
Communications, Vol. 58, No. 6, pp. 555–567, 2010.
[12] J. Ketonen, M. Juntti and J.R. Cavallaro, “Performance Complexity Comparison of
Receivers for a LTE MIMO–OFDM System”, IEEE