Comm 1 Lab 01
Comm 1 Lab 01
COMMUNICATION 1: PRINCIPLES
OF COMMUNICATION SYSTEMS
_________________________
Instructor
LABORATORY EXERCISE 1
( a )What is MATLAB?
(http:// www.mathworks.com). The version of MATLAB we use is ver 6.1. There is a relatively
inexpensive student edition available from Prentice Hall Publishers.
In languages like FORTRAN & C we have to declare dimensions of matrices used. But, here, by
default each entry is a matrix, therefore dimensioning of a variable is not required. We can solve
complex numerical problems in a fraction of the time required with a programming
language such as FORTRAN or C. MATLAB is also a programmable system. It contains so
many useful algorithms as built-in functions and hence programming itself is easier. The
graphic and multimedia capabilities are also commendable.
MATLAB is recognized as the interactive program for numerical linear algebra and matrix
computation. In industries, MATLAB is used for research and to solve practical
engineering and mathematical problems. Also, in automatic control theory, statistics and
digital signal processing (Time-Series Analysis) one can use MATLAB. The following tool
boxes make it useful in soft computing at various industrial and scientific areas:
By clicking the MATLAB shortcut icon on the desktop of your computer (or selecting from the
program menu) you can access MATLAB. This results in getting MATLAB command window with
its prompt:
>>
with a blinking cursor appearing right of the prompt, telling you that MATLAB is waiting to
perform a mathematical operation you would like to give.
( i ) If you want to add two numbers say 7 & 12, type as follows
>> 7+12
and press the ENTER or return key, you see the following output:
ans =
19
Here, ans stands for the answer of computation. Similarly, the following gives product
and difference of these numbers,
ans =
84
ans =
( ii ) If you want to store the values 7 and 12 in MATLAB variables a & b and store the values of
their product and division in c and d, do as follows:
>> a =7 <ENTER>
a=
b=
12
c=
84
d=
1.7143
You can exit MATLAB with the command exit or quit. A computation can be stopped with
[ctrl-c]
Variable names must be a single word containing no space and up to 31 characters. Variables
names are case sensitive and a variable name must start with a letter. Punctuation characters
are not allowed.
>> expression
Expressions are composed of operators, function and variable names. After evaluation
the value is assigned to the variable and displayed. If the variable name and = sign are omitted,
a variable ans (for answer) is automatically created and the result is assigned to it.
A statement is normally terminated with the carriage returns. However, a statement can
be continued on the next line with three or more periods followed by a carriage return. Several
statements can be placed on a single line if separated by commas or semicolons. If the
last character of a statement is a semicolon, then values of the variable printing to the screen
will be suppressed, but the assignment is still carried out.
Rules of Precedence:
Expressions are evaluated from left to right with exponential operation having the
highest precedence, followed by multiplication and division having equal precedence, followed
by addition and subtracting having equal precedence. Parentheses can be used to alter
this ordering in which case these rules of precedence are applied within each set of
parentheses starting with the innermost set and proceeding outward.
( iii ) The most recent values assigned to the variables you used in the current session
are available. For example, if you type a at the prompt you get the output as :
>> a
a=
If you cannot remember the names of the variables, you have used in the current session, you
can use the who command for a list of variables it has in the current session.
>> who
ans a b cd
The command whos will list the variables in the workspace and their size. The command
>> clear
will remove all current variables from the memory of the system.
>> clear a
( iv) To recall previous commands, MATLAB uses the cursor keys , , , on your
keyboard.
( v ) The display of numerical values can have different format as we see below:
>> e= 1/3 e =
0.3333
>> e
e=
0.33333333333333
>> e
e=
3.3333 e-01
e=
3.33333333333333 e-04
>>e
e=
0.3333
( vi ) To suppress the display of output of a command on screen put semicolon ‘;’ after the
command.
>> a=3;
>>
>> exit
When we log out or exit, MATLAB will lose all the current variables from the memory.
To save the current session, type
>> save
This saves the all current variables to a binary diskfile matlab.mat. When you later re-
enter
>> load
( viii ) Complex numbers i or j stands for √−1 and pi gives the value of .
>> c = 1-2i
c=
1.000–2.0000 i
>> abs ( c )
ans =
2.2361
>> real ( c )
ans =
>> imag ( c )
ans =
-2
>> angle ( c )
ans =
-1.1071
>> help
MATLAB works with essentially only one kind of objects, i.e. a rectangular numerical matrix
Scalers - 1 by 1 matrix
4 5 6
7 8 9
>> a = [1 2 3; 4 5 6; 7 8 9]
a=
1 2 3
4 5 6
7 8 9
The rows are separated by semicolons and elements are separated by space or by comma. That
is, the above matrix can also be stored by the following command.
>> a = [1,2,3;4,5,6;7,8,9];
or by the statement
>> a = [
1 2 3
4 5 6
7 8 9 ];
>> b = a’
b=
1 4 7
2 5 8
3 6 9
Function Task
+ Addition
- Subtraction
* Multiplication
^ Power
‘ Transpose
\ Left Division
/ Right Division
Examples:
a1 =
2 6 10
6 10 14
10 14 18
b1 =
0 -2 -4
2 0 -2
4 2 0
c=
14 32 50
32 77 122
50 122 194
ans =
1 4 9 16
ans =
1 4 9 16
n=
l=
-37
ans =
16.1168
-1.1168
0.0000
v=
d=
16.1168 0 0
0 -1.1168 0
0 0 0.0000
ans =
3 3
ans =
The following are some special matrices generated by built-in statements and functions
a=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
b=
>> a = hilb(5)
a=
ans =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
ans =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
We can also load a matrix from an external ASCII file, say data.ext (where .ext is any extension).
If this ascii file contain a rectangular array of just the numeric matrix entries, then to load the
matrix type the command
a=
1 2 3 4
5 6 7 1
2 3 4 5
>> b= a(1:2,3) (Vector consisting of the first 2 entries of the 3rd column of a)
b=
c=
d=
1 2 3 4
5 6 7 1
e=
2 3 4 5
f=
2 4
6 1
3 5
aa =
3 4
7 1
b=
1 2 3 0 0
4 5 6 0 0
7 8 9 0 0
1 1 1 1 0
1 1 1 0 1
Functions of vectors
>> t = [1:2:10] (Makes a row vector t having element starting from 1 up to 10 with step size 2)
t=
1 3 5 7 9
tt =
5 4 3 2 1 0
x=
ans =
ans =
ans =
25
ans =
ans =
1 3 5 7 9
ans =
945
ans =
>> any(t)
ans =
>> all(t)
ans =
ans =
3.1623
4.Plotting Graphs
2-D plots :
Suppose we want to plot the graph of y = sin(x), in a interval [0,10]. Type as follows
We can also give the title, x-label, y-label to the graph, to do this you type as follows
on
>>xlabel(‘X Values’);
>>ylabel(‘Y=Sin(x)’);
More on plots
If x or y is a matrix, then the vector is plotted versus the rows or columns of the matrix,
whichever line up.
In all other uses of plot, the imaginary part is ignored. various line types, plot symbols and
colors may be obtained with plot(x,y,s) where s is a character string made from one element
from any or all the following columns:
H hexagram
Example:
plot(x,y,'c+:') plots a cyan dotted line with a plus at each data point.
plot(x,y,'bd') plots blue diamond at each data point but does not draw any line.More
than one plot in the same graph
puts two plots, plot(x, y, ‘b’) and plot(x, z, ‘g’) in one graph. The first one with blue color and
the second with green color.
Example:
>> x = sin(t);
>> y = cos(t);
>> plot(t, x,’*’, t, y,’-’) (plots sine and cos graphs in the same plot)
plot(x1,y1,s1,x2,y2,s2,x3,y3,s3,...) combines the plots defined by the (x,y,s) triples, where the
x's and y's are vectors or matrices and the s's are strings.
plot(x,y,'y-',x,y,'go') plots the data twice, with a solid yellow line interpolating green circles at
the data points.
Subplots
You can hold more than one set of axes on one figure window. The command
subplot(m,n,p) subdivides the current figure window into an m-by-n matrix of plotting areas
and chooses the pth area to be active.
Example:
>> x = -2*pi:pi/10:2*pi;
>> y = x.^2;
>> z = sin(x);
>> y1 = cos(x);
>> z1 = exp(x);
>> subplot(2,2,1),plot(x,y)
>> grid
>> subplot(2,2,2),plot(x,z)
>> grid
>> subplot(2,2,3),plot(x,y1)
>> grid
>> subplot(2,2,4),plot(x,z1)
>>grid
arbitrary positions
positions
MATLAB Programming
We can also do programming in MATLAB as we are doing in FORTRAN, C & C++. To make a file
in MATLAB we have to click on “New” in the file menu in menubar. It will open a new file as we
are doing in “word”; and if we save this file (called m-file), will be saved in “bin” folder of
MATLAB.
Such files are called “M-files” because they have an extension of “.m” in its filename. Much of
There are two types of M-files: Script Files and Function Files
Script Files
A script file consists of a sequence of normal MATLAB statements. If the file has the filename,
say, rkg.m, then the MATLAB command >> rkg will cause the statements in the file to be
executed. Variables in a script file are global and will change the value of variables of the same
name in the environment of the current MATLAB session.
Script files are often used to enter data into a large matrix; in such a file, entry errors can be
easily edited out.
b =a’;
c = a+b
d = inv(c)
a=
1 2 3
0 1 1
1 2 3
b=
1 0 1
2 1 2
3 1 3
c=
2 2 4
2 2 3
4 3 6
d=
-1.5000 0 1.0000
0 2.0000 -1.0000
1.0000 -1.0000 0
The % symbol indicates that the rest of the line is a comments. MATLAB will ignore the rest of
the line. However, the first comment lines which document the m-file are available to the on-
line help facility and will be displayed
A M-file can also reference other M-files, including referencing itself recursively.
Function Files
Function files provide extensibility to MATLAB. You can create new functions specific to your
problem which will then have the same status as other MATLAB functions. Variables in a
function file are by default local. However, you can declare a variable to be global if you wish.
Example
y = a*b;
Save this file with filename prod.m then type on the MATLAB prompt
ans =
12
As we know that if we don’t write “;” after a statement in MATLAB, it will print the output also.
That means if in a programme we write:
Control Flow
2. For loops
3. While loops
1) if statement condition:
if expression
statements
elseif expression
statements
else
statements
end
The statements are executed if the real part of the expression has all non-zero elements. The
else and elseif parts are optional. zero or more elseif parts can be used as well as nested if's.
The expression is usually of the form
Example:
if i == j
a(i,j) = 2;
else
else is used with if. The statements after the else are executed if all the preceding if
and
if expression
statements
elseif expression
statements
else
statements
end
elseif is used with if. The statements after the elseif are executed if the expression is true and
all the preceding if and elseif expressions are false. An expression is considered true if the real
part has all non-zero elements. elseif does not need a matching end, while else if does.
if expression
statements
elseif expression
statements
else
statements
end
4) end terminate scope of for, while, switch, try, and if statements. Without end's, for, while,
switch, try, and if wait for further input. each end is paired with the closest previous unpaired
for, while, switch, try or if and serves to terminate its scope. end can also serve as the last index
in an indexing expression. in that context,
end = size(x,k) when used as part of the k-th index. examples of this use are, x(3:end)
and x(1,1:2:end-1). when using end to grow an array, as in x(end+1) = 5, make sure x exists
first.
end
The columns of the expression are stored one at a time in the variable and then the following
statements, up to the end, are executed. The expression is often of the form x:y, in which
case its columns are simply scalars. some examples
for i = 1:n,
for j = 1:n,
a(i,j) = 1/(i+j-1);
end
end
for s = 1.0: -0.1: 0.0, end steps s with increments of -0.1 for e = eye(n), ... end sets e to the unit
n-vectors.
Long loops are more memory efficient when the colon expression appears in the for statement
since the index vector is never created.
6) The break statement can be used to terminate the loop prematurely. break terminate
execution of while or for loop. In nested loops, break exits from the innermost loop only.
while expression
statements
end
The statements are executed while the real part of the expression has all non-zero elements.
The expression is usually the result of expr rop expr where rop is ==, <, >, <=, >=, or ~=.
Example:
e = 0*a; f = e + eye(size(e)); n = 1;
f = a*f/n;
n = n + 1;
end
...
otherwise,
end
The first case where the switch_expr matches the case_expr is executed. when the
case expression is a cell array (as in the second case above), the case_expr matches if
any of the elements of the cell array match the switch expression. If none of the case
expressions match the switch expression then the otherwise case is executed (if it
exists). Only one case is executed and execution resumes with the statement after the
end. the switch_expr can be a scalar or a string. A scalar switch_expr matches a
case_expr if switch_expr==case_expr. A string switch_expr matches a case_expr if
strcmp(switch_expr,case_expr) returns 1 (true).
Example:
switch lower(method)
end
case is part of the switch statement syntax, whose general form is:
...
otherwise,
end
otherwise is part of the switch statement syntax, whose general form is:
...
otherwise,
end
The otherwise part is executed only if none of the preceding case expressions match the
switch expression.
Normally, only the statements between the try and catch are executed. however, if an error
occurs while executing any of the statements, the error is captured into lasterr and the
statements between the catch and end are executed. if an error occurs within the
catch statements, execution will stop unless caught by another try...catch block. The
error string produced by a failed try block can be obtained with lasterr.
return causes a return to the invoking function or to the keyboard. it also terminates the
keyboard mode.
normally functions return when the end of the function is reached. a return statement can be
used to force an early return.
Example:
function d = det(a)
if isempty(a) d = 1; return
else
...
end
Suppose we have created a m-file & saved. Now to run this program, on command prompt type
the file name and just press the ENTER KEY that will run the file.
Data File:
Now to make a data file in MATLAB, we just make a file in which all the data are stored. Now
we make another file in which the operation on that data is to be done. Then in this file, where
we have to call that data we have to just type the file name of the file in which data is stored
and write the rest of the programming statements. So when run this file the file in which data is
stored will be called and then rest of the programming statements are executed & finally we
get the output.
MEX-Files:
We can call our C programs from MATLAB as if they were built in functions. Those
programs in C which are callable in MATLAB are referred as MEX-Files. MEX-files are
dynamically linked subroutines that the MATLAB interpreter can automatically load & execute.
For example the following program in C to add two integers having file name “add”.
#include<stdio.h>
main( )
{ int a=2,b=3;
d=a+b;
printf(‘sum is:’,d);
return 0;
>>mex add.c
>> diary file --- Causes copy of all subsequent keyboard input and most of the
resulting output (but not graphs) to be written on the named file.
>> pause --- causes to stop execution of until any key is pressed.
Some Examples:
for i = 1:n
for j = 1:n
if i==j
a(i, j) = 2
a(i, j) = -1;
else
a(i, j) = 0;
end
end
end
eps = 1
while (1+eps)>1
eps = eps/2;
end
eps = eps*2
% This subroutine will perform Gaussian elimination on the matrix you pass and solve %
the system AX = b
N = max(size(A))
for j = 2:N
for i = j:N
m = A(j,j-1) / A(j-1,j-1);
end
end
x = zeros(N, 1)
for j = N-1:-1:1
end
RELATIONAL OPERATORS
MATLAB relational operators can be used to compare two arrays of the same size, or to
compare an array to a scalar. When we compare an array to a scalar, scalar expansion is used to
compare the scalar to each array element and the result has the same size as the array.
== compares two variables and returns ones where they are equal and zeros where they are
not; while, = is used to assign the output of an operation to a variables.
Example:
>> a = 1:0.5:10;
>> b = 5:0.5:14;
>> c = a > 5 c =
Columns 1 through 12
0 0 0 0 0 0 0 0 0 1 1 1
Columns 13 through 19
1 1 1 1 1 1 1
>> d = (a ==b)
d=
Columns 1 through 12
0 0 0 0 0 0 0 0 0 0 0 0
Columns 13 through 19
0 0 0 0 0 0 0
LOGICAL OPERATORS
Example:
>> a = 1:15;
>> b = ~ ( a < 5 )
b=
Columns 1 through 12
0 0 0 0 1 1 1 1 1 1 1 1
Columns 13 through 15
1 1 1
c=
Columns 1 through 12
0 0 1 1 1 1 1 0 0 0 0 0
Columns 13 through 15
0 0 0
d=
Columns 1 through 12
1 1 1 1 1 1 1 1 1 1 1 1
Columns 13 through 15
1 1 1
We can solve a system of differential equations using MATLAB, the function names for
that are ode45, ode23, ode113 etc. Out of which we are going to concentrate on ode45 only,
and the syntax rule for that is:
>> [x , t]=ode45(‘filename’,tspan,x0)
Suppose we have to solve: dx1/dt = -x1(t)-t2 x2(t) ; dx2/dt = -t2x1(t)-x2(t) x1(0)=1 x2(0)=1 on
[0,1].
Here we have to create a new file suppose the file name is orddiff.m. In that file we have to
write the above system of differential equation, and for that we write a function:
i.e. we write :
function y = orddiff(t,x)
After doing this go to command prompt. Here initial conditions are [1 1]’ so our x0=[1 1]’ and
we have to solve this ode on [0 1] so our tspan=[0 1], then
>> [x t] = ode45(‘orddiff’,tspan,x0)
We can find minimum of a function in an interval using MATLAB, the function names for that
are fmin, fmins. Here we give example of fmin only, the syntax rule for that is:
>> X= fmin(‘filename’,x1,x2)
Here we have to create a new file suppose the file name is rkgmin.m. In that file we have to
write the above function, and for that we write a function:
function y = rkgmin(x)
y = x .^2;
After doing this go to command prompt. Here the interval on which we have to find the
minimum is [2, 4] so our x1 = 2 and x2 = 4. On command prompt now you type:
>>X = fmin(‘rkgmin’,x1,x2)
The Communications Toolbox extends the MATLAB technical computing environment with
functions, plots, and a graphical user interface for exploring, designing, analyzing, and
simulating algorithms for the physical layer of communication systems. The toolbox helps you
create algorithms for commercial and defense wireless or wireline systems.
Functions for designing the physical layer of communications links, including source
coding, channel coding, interleaving, modulation, channel models, and equalization
Plots such as eye diagrams and constellations for visualizing communications signals Graphical
user interface for comparing the bit error rate of your system with a wide variety of
proven analytical results
In most media for communication, only a fixed range of frequencies is available for
transmission. One way to communicate a message signal whose frequency spectrum does
not fall within that fixed frequency range, or one that is otherwise unsuitable for the channel, is
to alter a transmittable signal according to the information in your message signal. This
alteration is called modulation, and it is the modulated signal that you transmit. The
receiver then recovers the original signal through a process called demodulation. The
contents of this tool box are as follows.
This section describes how to represent analog signals using vectors or matrices. It
provides examples of using the analog modulation and demodulation functions.
Representing Analog Signals To modulate an analog signal using this toolbox, start with a real
message signal and a sampling rate Fs in hertz. Represent the signal using a vector x, the entries
of which give the signal's values in time increments of 1/Fs. Alternatively, you can use a
matrix to represent a multichannel signal, where each column of the matrix represents
one channel.
Description:
y = ammod(x,Fc,Fs) uses the message signal x to modulate a carrier signal with
frequency Fc (Hz) using amplitude modulation. The carrier signal and x have
sample frequency Fs (Hz). The modulated signal has zero initial phase and zero carrier
amplitude, so the result is suppressed-carrier modulation.Note The x, Fc, and Fs input
arguments must satisfy Fs > 2(Fc + BW), where BW is the bandwidth of the
modulating signal x.y = ammod(x,Fc,Fs,ini_phase) specifies the initial phase in the
modulated signal y in radians.y = ammod(x,Fc,Fs,ini_phase,carramp) performs
transsmitted-carrier modulation instead of suppressed-carrier modulation. The
carrier amplitude is carramp.
Description
y = pmmod(x,Fc,Fs,phasedev) modulates the message signal x using phase modulation.
The carrier signal has frequency Fc (Hz) and sampling rate Fs (Hz), where Fs must be at
least 2*Fc. The phasedev argument is the phase deviation of the modulated signal in
radians.y = pmmod(x,Fc,Fs,phasedev,ini_phase) specifies the initial phase of the
modulated signal in radians.
y = ssbmod(x,Fc,Fs,ini_phase)
y = ssbmod(x,fc,fs,ini_phase,'upper')
Description:
y = ssbmod(x,Fc,Fs) uses the message signal x to modulate a carrier signal with
frequency Fc (Hz) using single sideband amplitude modulation in which the lower
sideband is the desired sideband. The carrier signal and x have sample frequency Fs
(Hz). The modulated signal has zero initial phase. y = ssbmod(x,Fc,Fs,ini_phase) specifies
the initial phase of the modulated signal in radians.y = ssbmod(x,fc,fs,ini_phase,'upper')
uses the upper sideband as the desired sisedband.
QUESTIONS:
Interpretation of the Results: (Discuss results and (if any) theoretical concepts that are
related to this activity.)
Conclusion: (Write down your conclusions, things learned, problems encountered during the lab
and how they were solved, etc.)
2. Make a good selfie with your screen doing the Lab activity.
Note: Also attached/submit lab files along with the Lab Report.