Underwater Communication Using Acoustic System
Underwater Communication Using Acoustic System
CHAPTER 1
INTRODUCTION
To sum up, the underwater wireless communication system that has been
shown provides a complete answer to the problems associated with data transmission
in underwater environments. The system seeks to deliver reliable and strong
communication by incorporating cutting-edge signal processing techniques and
modulation schemes, enabling a range of underwater applications with enhanced
performance and dependability.
CHAPTER 2
LITERATURE SURVEY
in 2005's volume 3, issue 3. The first section of the paper introduces the idea of
underwater acoustic sensor networks (UASNs) and discusses its importance in a
number of underwater applications, including underwater surveillance, environmental
monitoring, and the gathering of oceanographic data [17].
In August 2004, P. Ögren, E. Fiorelli, and N. E. Leonard published a paper
titled "Cooperative control of mobile sensor networks: Adaptive gradient climbing in
a distributed environment" in the IEEE Transactions on Automatic management,
volume 49, number 8. In order to highlight the value of networked sensors working
together, the study presents the idea of cooperative control in mobile sensor networks
[18].
Authors J.-H. Cui, J. Kong, M. Gerla, and S. Zhou published an article titled
"The challenges of building mobile underwater wireless networks for aquatic
applications" in IEEE Network magazine, volume 20, issue 3, May/June 2006.The
difficulties in developing mobile underwater wireless networks (MUWNs) for a range
of aquatic applications are presented in this research. [19].
Authors G. Han, J. Jiang, N. Bao, L. Wan, and M. Guizani published an article
titled "Routing protocols for underwater wireless sensor networks" in IEEE
Communications Magazine, volume 53, issue 11, November 2015.The difficulties and
significance of routing in underwater wireless sensor networks (UWSNs) are
discussed in this research. It draws attention to the distinctive qualities of underwater
settings. [20].
The Journal of Network and Computer Applications, volume 78, published an
article by M. Ahmed, M. Salleh, and M. I. Channa titled "Routing protocols based on
node mobility for underwater wireless sensor network (UWSN): A survey" in January
2017. In this research, the idea of underwater wireless sensor networks (UWSNs) is
presented, and the importance of routing protocols in enabling communication
between underwater sensor nodes is emphasized [21].
In May 2017, M. Khalid et al.'s study "A survey of routing issues and
associated protocols in underwater wireless sensor networks" was published in the
Journal of Sensors. Underwater wireless sensor networks (UWSNs) are presented in
this research, which also highlights the role that routing protocols play in facilitating
communication between underwater sensor nodes. [22].
.
CHAPTER 3
UNDER WATER COMMUNICATION
3.1 INTRODUCTION
Underwater communication is a specialized field that focuses on transmitting data,
signals, or messages through water medium. It plays a crucial role in various
applications, including ocean exploration, environmental monitoring, underwater
navigation, offshore industries, defense, and scientific research. Unlike terrestrial or
aerial communication, underwater communication faces unique challenges due to the
properties of water, such as high attenuation, multipath propagation, signal dispersion,
and limited bandwidth.
One of the primary challenges in underwater communication is the attenuation of
electromagnetic signals. Electromagnetic waves, such as radio waves, are quickly
absorbed by water, limiting their range and penetration depth. As a result, alternative
communication methods are often employed, including acoustic, optical, and
electromagnetic induction techniques.
Acoustic communication is one of the most common methods used for underwater
communication. It involves transmitting sound waves through water, which can travel
long distances with minimal attenuation. However, acoustic communication is
susceptible to noise, multipath propagation, and Doppler effects, which can degrade
signal quality and reliability.
Optical communication utilizes light waves to transmit data through water. Optical
signals can achieve high data rates and are less susceptible to interference compared
to acoustic signals. However, optical communication is limited by water turbidity,
absorption, and scattering, which can attenuate the signal and reduce transmission
range.
Electromagnetic induction communication relies on magnetic fields to transmit
signals through conductive mediums, such as seawater. While electromagnetic
induction can penetrate water more effectively than electromagnetic waves, it is
limited by its low data rates and short transmission range.
In recent years, advancements in underwater communication technologies have led to
the development of hybrid systems that combine multiple communication modalities
Department of ECE, SVNE, Tirupati Page 9
Underwater wireless communication system Using Modem
to overcome the limitations of individual methods. These hybrid systems leverage the
strengths of different communication techniques to achieve robust, high-speed, and
long-range communication in underwater environments.
Overall, underwater communication continues to be an active area of research
and development, driven by the increasing demand for ocean exploration, resource
exploitation, and environmental monitoring. By overcoming the challenges of
underwater communication, scientists, engineers, and policymakers can gain valuable
insights into the world's oceans and address pressing environmental and societal
issues.
hybrid communication systems, to overcome the challenges and unlock the potential
of underwater communication for various applications.
3.4 EXISTING SYSTEM
Underwater acoustic channel propagation is influenced by three major factors,
attenuation that increases with signal frequency, time-varying multipath propagation
and low speed of sound (1500 m/s). Underwater acoustic propagation is best
supported at low frequencies. Since attenuation increases with frequency, for long
range communication low frequency band only can be used, this in turn reduces the
channel capacity. Bandwidth is extremely limited for long range communication.
Other parameters that deteriorate the performance of underwater communication
include the background noise or the ambient noise and Doppler spread due to random
motion between the transmitting and receiving systems. Noise domination is more in
low frequencies and decays with increase in frequency.
As of right now, FSK is a simple digital modulation technology that can provide
reliable communication in difficult media environments. Many researchers employ
FSK modulation because of its receiver dependability and simplicity. One of the main
disadvantages of FSK modulation is that its bit rate is slower than that of other
modulation schemes. FSK is not the optimal option for high data rate applications like
autonomous underwater vehicle (AUV) control and music or video streaming. Given
that frequency shift keying is a low-bandwidth modulation technique that is
straightforward and efficient. It was chosen to be implemented as a physical layer
communication protocol because of its resistance to frequency spreading of
underwater acoustic channels, and because it has been widely used in underwater
communication for 20 years (to match transducer properties and analog circuits
employed).
CHAPTER 4
PROPOSED METHOD
4.1 Introduction
The proposed method for an underwater wireless communication system
utilizing a modem is designed to address the significant challenges posed by
underwater environments. Traditional wireless communication technologies struggle
in underwater conditions due to substantial attenuation, multipath propagation, and
other unique challenges.
At the heart of this system is the modem, responsible for transmitting and
receiving digital signals that undergo modulation and demodulation processes. To
combat the effects of noise, fading, and other channel impairments, a series of signal
processing techniques and modulation schemes are integrated into the system.
The communication process begins with input bits, which are encoded using
channel coding techniques to enhance robustness against errors introduced by the
underwater channel. The encoded bits are then modulated using Quadrature Phase
Shift Keying (QPSK), a modulation scheme known for its efficiency in noisy
environments.
After modulation, the signal undergoes additional processing, including
Inverse Fast Fourier Transform (IFFT) and Cyclic Prefix Adder, to prepare it for
transmission. These techniques help mitigate the effects of multipath propagation, a
common issue in underwater communication.
Despite these measures, the transmitted signal is still subject to noise and
fading. To combat this, the system employs techniques such as Adaptive Equalization,
which adjusts the receiver's parameters in real-time to counteract the effects of fading.
Additionally, the signal is passed through an Additive White Gaussian Noise
(AWGN) channel model to simulate the underwater noise environment accurately.
At the receiver end, the received signal is processed through Fast Fourier Transform
(FFT) and QPSK demodulation to recover the original data bits. The demodulated bits
are then decoded to correct any errors introduced during transmission.
Through comprehensive testing and analysis, comparative results are obtained
to evaluate the performance of the proposed communication system. The emphasis is
placed on reducing the impacts of noise, fading, and other channel impairments,
4) OFDM Implementation:
Use the modem's FFT (fast fourier transform) and IFFT (inverse fast fourier
transform) algorithms for OFDM modulation and demodulation.
Add a cyclic prefix to the transmitted OFDM symbols to combat multipath
interference.
5) Adaptive Equalization:
Create adaptive equalization algorithms to reduce the impacts of fading and
channel distortions by dynamically adjusting receiver characteristics.
6) Noise and Fading Mitigation:
Implement techniques to mitigate the effects of additive white Gaussian noise
(AWGN) and fading in the communication system, such as adaptive filtering and
diversity combining.
7) Performance Evaluation:
It is essential to compare the input and output bits in order to evaluate the
communication system's performance. A number of metrics, including the bit error
rate (BER), which measures the precision of data transmission, can be measured
thanks to this comparison. Analyzing the consistency of input and output bits allows
one to determine how reliable and dependable the system is in transmitting data.
FLOW CHART
Performance Metrics
Here are commonly used performance metrics for evaluating the
performance of communication system.
Bit error rate (BER):
The number of bit mistakes per unit of time is known as the bit error rate, or
BER. The amount of bit errors divided by the total number of bits transferred during
the examined time span yields the bit error ratio, or BER. A unit-less performance
metric known as the bit error ratio is frequently stated as a percentage
CHPATER 5
SOFTWARE AND HARDWARE DESCRIPTION
5.1 REQUIREMENTS
Hardware
Hard Disk-1GB
RAM-4GB
LAPTOP
Windows-7 OS
Software
MATLAB 2013a Version
5.2 MATLAB
MATLAB is a high-performance language for technical computing. It
integrates computation, visualization, and programming in an easy-to-use
environment where problems and solutions are expressed in familiar mathematical
notation. MATLAB is an interactive system whose basic data element is an array that
does not require dimensioning. This allows you to solve many technical computing
problems, especially those with matrix and vector formulations, in a fraction of the
time it would take to write a program in a scalar non interactive language such as C or
FORTRAN. The name MATLAB stands for matrix laboratory. MATLAB was
originally written to provide easy access to matrix software developed by the
LINPACK and EISPACK projects. Today, MATLAB engines incorporate the
LAPACK and BLAS libraries, embedding the state of the art in software for matrix
computation.
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.
MATLAB features a family of add-on application-specific solutions called toolboxes.
Very important to most users of MATLAB, toolboxes allow you to learn and apply
specialized technology. Toolboxes are comprehensive collections of MATLAB
functions (M-files) that extend the MATLAB environment to solve particular classes
of problems. Areas in which toolboxes are available include signal processing, control
systems, neural networks, fuzzy logic, wavelets, simulation, and many others.
Key features:
• High-level language for numerical computation, visualization, and application
development
• Interactive environment for iterative exploration, design, and problem solving
• Mathematical functions for linear algebra, statistics, Fourier analysis,
Filtering, optimization, numerical integration, and solving ordinary differential
equation.
• Built-in graphics for visualizing data and tools for creating custom plots
• Development tools for improving code quality and maintainability and maximizing
Performance
• Tools for building applications with custom graphical interfaces
• Functions for integrating MATLAB based algorithms with external applications and
languages such as C, Java, .NET, and Microsoft
THE MATLAB SYSTEM:
The MATLAB system consists of five main parts
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, an editor and debugger, and browsers for
viewing help, the workspace, files, and the search path.
The MATLAB Mathematical Function Library:
This is a vast collection of computational algorithms ranging from elementary
functions, like sum, sine, cosine, and complex arithmetic, to more sophisticated
functions like matrix inverse, matrix Eigen values, Bessel functions, and fast Fourier
transforms.
The MATLAB Language:
This is a high-level matrix/array language with control flow statements, functions,
data structures, input/output, and object-oriented programming features. It allows both
“programming in the small” to rapidly create quick and dirty throw-away programs,
and “programming in the large” to create large and complex application programs
Graphics
Department of ECE, SVNE, Tirupati Page 23
Underwater wireless communication system Using Modem
MATLAB has extensive facilities for displaying vectors and matrices as graphs, as
well as annotating and printing these graphs. It includes high-level functions for two-
dimensional and three-dimensional data visualization, image processing, animation,
and presentation graphics. It also includes low-level functions that allow you to fully
customize the appearance of graphics as well as to build complete graphical user
interfaces on your MATLAB applications.
The MATLAB Application Program Interface (API):
This is a library that allows you to write C and FORTRAN programs that interact with
MATLAB. It includes facilities for calling routines from MATLAB (dynamic
linking), calling MATLAB as a computational engine, and for reading and writing
MAT-files.
Various toolboxes are there in MATLAB for computing recognition techniques, but
we are using IMAGE PROCESSING toolbox.
Getting Started
If you are new to MATLAB, you should start by reading Manipulating Matrices. The
most important things to learn are how to enter matrices, how to use the: (colon)
operator, and how to invoke functions. After you master the basics, you should read
the rest of the sections below and run the demos.
At the heart of MATLAB is a new language you must learn before you can fully
exploit its power. You can learn the basics of MATLAB quickly, and mastery comes
shortly after. You will be rewarded with high productivity, high-creativity computing
power that will change the way you work.
Introduction - describes the components of the MATLAB system.
Development Environment - introduces the MATLAB development environment,
including information about tools and the MATLAB desktop.
Manipulating Matrices - introduces how to use MATLAB to generate matrices and
perform mathematical operations on matrices.
Graphics- introduces MATLAB graphic capabilities, including information about
plotting data, annotating graphs, and working with images.
Programming with MATLAB - describes how to use the MATLAB language to
create scripts and functions, and manipulate data structures, such as cell arrays and
multidimensional arrays.
5.1.1 DEVELOPMENT ENVIRONMENT
Department of ECE, SVNE, Tirupati Page 24
Underwater wireless communication system Using Modem
Introduction
This chapter provides a brief introduction to starting and quitting MATLAB, and the
tools and functions that help you to work with MATLAB variables and files. For
more information about the topics covered here, see the corresponding topics under
Development Environment in the MATLAB documentation, which is available online
as well as in print.
Starting and Quitting MATLAB
Starting MATLAB
On a Microsoft Windows platform, to start MATLAB, double-click the MATLAB
shortcut icon on your Windows desktop. On a UNIX platform, to start MATLAB,
type matlab at the operating system prompt. After starting MATLAB, the MATLAB
desktop opens - see MATLAB Desktop. You can change the directory in which
MATLAB starts, define start up options including running a script upon start up, and
reduce start up 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
This section provides an introduction to MATLAB's desktop tools. You can also use
MATLAB functions to perform most of the features found in the desktop tools. The
tools are:
Current Directory Browser
Workspace Browser
Array Editor
Editor/Debugger
Command Window
Command History
Launch Pad
Help Browser
Command Window
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.
Running External Programs
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,
emacsmagik.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
MATLAB's Launch Pad provides easy access to tools, demos, and documentation.
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 help browser 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
Use to Help Navigator to find information. It includes:
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 Math Works
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.
Favourites tab -View a list of documents you previously designated as favourites.
Display Pane After finding documentation using the Help Navigator, view it in the
display pane. While viewing the documentation, you can:
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.
Bookmark pages - Click the Add to Favourites button in the toolbar.
Print pages - Click the print button in the toolbar.
Find a term in the page - Type a term in the Find in page field in the toolbar and
click Go. Other features available in the display pane are: copying information,
evaluating a selection, and viewing Web pages.
Current Directory Browser MATLAB file operations use the current directory and
the search path as reference points. Any file you want to run must either be in the
current directory or on the search path.
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 Math Works toolboxes are included in the search path.
Workspace Browser
The MATLAB workspace consists of the set of variables (named arrays) built up
during a MATLAB session and stored in memory. You add variables to the
workspace by using functions, running M-files, and loading saved workspaces.
To view the workspace and information about each variable, use the Workspace
browser, or use the functions who and who’s.
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
Double-click on a variable in the Workspace browser to see it in the Array Editor. Use
the Array Editor to view and edit a visual representation of one- or two-dimensional
numeric arrays, strings, and cell arrays of strings that are in the workspace.
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 textediting, 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.
MATLAB working environment
MATLAB desktop:-
MATLAB Desktop is the main MATLAB application window. The desktop contains
five sub windows, the command window, the workspace browser, the current
directory window, the command history window, and one or more figure windows,
which are shown only when the user displays a graphic.
and I (n1, n′2) have same vertical coordination. In matlab pixels are addressed in
conventional way where I (q1, q2) represents the pixel of [q1, q2] T that can also be
addressed by one index as q = (q2 − 1) size (I, 1) + q1. Occasionally, this one element
addressing simplifies m-file development.
In addition to intensity processes, there is a group of functions (namely spatial
transforms) usually employed for registrations and motion modelling (camera or
object). Two important and general functions of this group are maketformand
imtransformthat can apply many spatial transforms .With respect to high computation
and time cost of these functions, it is recommended to use substitutes as imrotateand
imresizewhen the motion or deformation is not sophisticated.
4.2 MIPAV software:
Medical Image Processing and Visualization (MIPAV) software can be used to
generate statistics on contoured volume of interest (VOI) regions and to calculate the
volume of painted pixels and voxels and also use MIPAV‘s algorithms to perform
more sophisticated image analysis.
Calculating statistics for contoured VOIs
Once we have contoured structures, we can generate statistics on the VOI.
To select the type of statistics to calculate for a single VOI
1 Open an image.
2 Contour a VOI. An example of a contoured VOI is shown below figure (6.1).
3 Select the VOI.
4 Do one of the following:
• Select VOI > Properties.
• Right-click inside the VOI, which automatically selects it. Then select Properties on
the menu. The VOI Statistics dialog box (Figure 6.1) opens.
5 Choose the types of statistics that you want the program to calculate by selecting the
appropriate check boxes in the Statistics to calculate group. Refer to Figure for
information on each statistic you can select.
6 Click Calculate.
• Statistics Options page—this page provides a choice of the types of statistics that
may be calculated as well as the conditions under which they may be run.
• Logging page—this page provides the results of the statistics in a tabular form.
Depending on the number of VOIs included in the calculation, the results may include
one or more lines of text.
CHAPTER 6
SIMULATION RESULTS
Figures 4 through 5 display the MATLAB simulation results for the underwater
wireless communication system model, respectively. Figure 4 displays the suggested
system's BER performance as a function of SNR. Four distinct phase shifts are
employed to represent four different symbols in the QPSK digital modulation
technique. Because of the modulation's vulnerability to noise, QPSK will normally
have a greater BER at lower SNR values on the graph than at higher SNR levels.
Because there is less noise interfering with the signal, the BER lowers as the SNR
rises. By establishing orthogonal channels, the linear equalization method known as
"zero forcing" seeks to reduce the impact of ISI (Inter-Symbol Interference). QPSK
ZF can provide better BER performance than regular QPSK, particularly in situations
where ISI is a major concern. In the graph, you may notice that QPSK ZF has a lower
BER than regular QPSK, especially at lower SNR values. As the performance
enhancement saturates, there may be diminishing returns at greater SNR values.
Another linear equalization method that reduces the mean square error between the
broadcast and received signals is called minimum mean square error. Like ZF, QPSK
MSE seeks to counter ISI and enhance system performance in general. In the graph,
QPSK MSE may exhibit even better BER than QPSK ZF, especially in situations
when there are notable channel impairments. But at higher SNR values, there might
be diminishing gains, similar to ZF.
1 0.6
2 0.5
3 0.4
Existing Method FSK
4 0.3
5 0.2
6 0.1
1 0.14
2 0.12
3 0.11
Proposed Method QPSK
4 0.1
5 0.08
6 0.07
4 Method
Technique
3 SNR
BER
2
0
1 2
It is evident that the current method with FSK modulation yields lower Bit Error
Rates at all SNR levels when compared to the proposed approach with QPSK
modulation. According to this, the recommended method outperforms the others in
terms of error resilience and reliability, making it a more viable choice for underwater
wireless communication systems, especially in environments with challenging SNR
conditions
CHAPTER 7
CONCLUSION AND FUTURE SCOPE
CONCLUSION
The creation and application of an underwater wireless communication system that
integrates advanced signal processing methods like OFDM modulation, adaptive
equalization, and channel coding holds considerable promise for facilitating
dependable and efficient communication in challenging underwater environments.
Through the implementation of these solutions, the system can more effectively
mitigate the adverse effects of fading, noise, and other channel impairments, hence
improving overall communication performance. Furthermore, the evaluation of
system effectiveness, namely through metrics such as bit error rate (BER), provides
important insights into the effectiveness of the communication system.
FUTURE SCOPE
Underwater communication systems must increase their coverage and range in
order to provide continuous connectivity and long-distance communication across
vast maritime zones. Future efforts may focus on developing efficient transducers,
antenna arrays, and relay nodes in order to get over the limitations placed on
underwater networks by signal attenuation and propagation losses and expand their
reach.
REFERENCES
APPENDIX
MATLAB – PROGRAMMING CODE
Programming code:
clc
ii=1;
t_data=randint(2*9600,1)'; %%% random bits /
data generation
datalen=length(t_data);
x=1;
si=1;
fftlength=128; %%%% 150 fft blocks
dataframelength=48; %%%%% 400 frames
Modul=[4 16 8];
sf=[2 4 3];
EbN0dB = [0:15]; % bit to noise ratio
EsN0dB = EbN0dB + 10*log10(112/fftlength) + 10*log10(128/144); %
converting to symbol to noise ratio
%%%%%%
L=2; % constalation size
loops=30; %number of channels
complex_flag=0;
symbols_dat=100; %number of data per channels
N=6; % number of user Tx Antenna
M=6;%number of user Rx Antennas
sig_streng=1:5:40;
L_EP=10;
%%%%%%%
x=floor(rand(N,symbols_dat,loops)*L)*2-(L-1);
n=randn(M,symbols_dat,loops);
H=randn(M,N,loops);
%%%%% All equalizer array initializations
pre_dq=zeros(length(sig_streng),1);
nom_zf=zeros(length(sig_streng),1);
nom_zf_opt=zeros(length(sig_streng),1);
nom_mse=zeros(length(sig_streng),1);
nom_mse_opt=zeros(length(sig_streng),1);
for ii=1:3
for d=1:datalen/dataframelength;
trans;
ch_parameter = [0.2, 0.3, 2, 3]; %%% Known channel
parameters (adaptive equalization is not done here)
o=1;
for loop1=1:length(EbN0dB)
snr=EsN0dB(loop1);
[ofdm_sig ofdm_sig1]=channel(recv,ch_parameter,snr,ii); %%%
cliping and Multipath
if d==1 && loop1 ==1 && ii==1
% sence;
receive;
end
receive; %%% Reciever
script
end
end
for col=1:length(EbN0dB);
bit_err=0;
normal=0;
snr=EsN0dB(col);
for row=1:(datalen/dataframelength);
bit_err=bit_err+BER(row,col);
end
bit_err=bit_err/(datalen/dataframelength);
M=Modul(ii);
normal=bit(M,col,snr,ii);
bit_err=bit_err*normal;
ber(1,col)=bit_err;
end
Ber(ii,:)=(sort(ber,'descend'))/sf(1);
end
for i=1:loops
%pre_dq=pre_dq+func_alloct(L,complex_flag,1,symbols_dat,N,M,sig_stren
g,x(:,:,i),n(:,:,i),H(:,:,i))/loops;
nom_zf=nom_zf+zff(L,complex_flag,1,symbols_dat,N,M,sig_streng,x(:,:,i
),n(:,:,i),H(:,:,i))/loops;
nom_zf_opt=nom_zf_opt+zffic(L,complex_flag,1,symbols_dat,N,M,sig_stre
ng,x(:,:,i),n(:,:,i),H(:,:,i))/loops;
nom_mse=nom_mse+msse(L,complex_flag,1,symbols_dat,N,M,sig_streng,x(:,
:,i),n(:,:,i),H(:,:,i))/loops;
nom_mse_opt=nom_mse_opt+msseic(L,complex_flag,1,symbols_dat,N,M,sig_s
treng,x(:,:,i),n(:,:,i),H(:,:,i))/loops;
end
%
figure
%
grid on;
semilogy(EbN0dB,Ber(1,:),'bs-','LineWidth',2);
hold on
semilogy(EbN0dB,Ber(2,:),'mx-','LineWidth',2);
hold on
semilogy(EbN0dB,Ber(3,:),'cd-','LineWidth',2);
axis([0 15 10^-5 1])
%
hold on;
semilogy(sig_streng,smooth(nom_zf),'r-s',
sig_streng,smooth(nom_zf_opt),'g-s','Linewidth',1.5);
xlim([sig_streng(1) sig_streng(end)]), xlabel('SNR (dB)'),
ylabel('Outage Prob')
legend('U1 ZF','U2 ZF')
constalation_name='QPSK';
title(['Comparison of various detectors in
',num2str(N),'x',num2str(M),' system, ', constalation_name, '
symbols']);
axis([sig_streng(1) sig_streng(end) 1e-4 1]);
grid on
figure;
semilogy(sig_streng,smooth(nom_mse),'r-<',
sig_streng,smooth(nom_mse_opt),'g-<','Linewidth',1.5);
xlim([sig_streng(1) sig_streng(end)]), xlabel('SNR (dB)'),
ylabel('Outage Prob')
legend('U1 MMSE','U2 MMSE')
constalation_name='QPSK';
title(['Comparison of various detectors in
',num2str(N),'x',num2str(M),' system, ', constalation_name, '
symbols']);
axis([sig_streng(1) sig_streng(end) 1e-4 1]);
grid on