2 General Definition of Simulation Tools 2.1 Introduction This chapter discusses several key topics to evaluate the tra...
711 downloads
3102 Views
19MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
2 General Definition of Simulation Tools 2.1 Introduction This chapter discusses several key topics to evaluate the transmission performance of wireless communication systems by computer simulation smoothly. This book primarily uses the excellent simulation software MATLAB. Therefore, first of all, Section 2.2 introduces a basic tutorial to use MATLAB by explaining selected commands that are frequently used in this book. Moreover, Section 2.2 defines several indispensable functions used frequently and commonly in the R&D of telecommunications by using MATLAB simulation programs. Section 2.3 explains data generation and BER by using the MATLAB program. Section 2.4 explains typical communication channels that are used to evaluate transmission performance and describes the method for programming the communication channels. In addition, Section 2.4 explains the AWGN channel and the Rayleigh fading channel. Finally, Section 2.5 concludes this chapter with a brief summary. Appendix 2A presents all the programs related to the chapter as does the CD-ROM that accompanies the book.
2.2 Basic Tutorial This book uses the MATLAB computer-simulation software, which is produced by MathWorks, Inc. MATLAB, a sophisticated language for matrix calculations [1], stands for matrix laboratory. This book is not intended to serve as a tutorial of MATLAB. Readers interested in a tutorial should consult the MATLAB tutorial book [1]. 29
30
2.2.1
Simulation and Software Radio for Mobile Communications
Generation of Vectors and Matrices
First, we will provide you with a few examples demonstrating how easy it is to use the MATLAB language. When you start to use MATLAB, you will find a workspace. The workspace shows a command line. You can directly input commands on the command line. Lets generate several vectors and matrices in the MATLAB workspace. 2 1. To make three vectors u = 1 , n = (1 −1 1), and s = 7, type on the 4 command line, and press enter, 〉〉 u=[ 2; 1; 4 ] you will see: u = 2 1 4
similarly type 〉〉
v=[1
-1
1 ]
and you set v = 1
-1
1
and 〉〉 s=7 s= 7
2. To generate a 3-by-3 matrix 1 2 1 A = 2 1 2 1 1 2
General Definition of Simulation Tools
31
〉〉 A=[1 2 1 ; 2 1 2; 1 1 2] A = 1 2 1
2 1 1
1 2 2
3. To transpose the vector and matrix, which operation-interchanges between aij and aji , you only need to put ’ after the vector and matrices. To transpose the n, type 〉〉
v’
MATLAB will output the result of the operations as ans = 1 -1 1
To transpose A, type 〉〉
A’
and set ans = 1 2 2 1 1 2
2.2.2
1 1 2
Indexing and Subscripting
We now describe how to obtain a subpart of a matrix or vector by using the example matrix. First lets generate the matrix. 2 4 8 B = 2 3 4 1 1 4
32
Simulation and Software Radio for Mobile Communications
〉〉 B=[2 4 8; 2 3 4; 1 1 4] B = 2 2 1
4 3 1
8 4 4
The element in row i and column j of B is denoted by B(i, j ) in MATLAB. For example, if you need the element B (2, 3), just type 〉〉 B(2,3) ans = 4
If you need any part of a matrix or vector, including elements from row m to row n and from column p to column q, you type B(m:n,p:q). For example, if you need the elements from row 1 to row 2 and from column 2 to column 3, you type as follows 〉〉 B(1:2,2:3) ans = 4 8 3 4
To access subparts of a matrix or vector in which the elements from row m to row n with increment a and from column p to column q with increment b, you execute B(m:a:n,p:b:q). For example, if you need the elements from row 1 to row 3 with increment 2 and from column 1 to column 3 with increment 2, you type as follows 〉〉 B(1:2:3,1:2:3) ans = 2 8 1 4
If you need all elements in row m of B or if you need all elements in column p of B, you also use the command :. By typing B(m,:) and B(:,p), you can obtain all elements in row m of B or all elements in column p of B, respectively. For example, if you need all elements in row 3 of matrix B, type 〉〉
B(3,:) ans =
General Definition of Simulation Tools
1
1
33
4
If you need all elements in column 2 of matrix B, type 〉〉 B(:,2) ans = 4 3 1 2.2.3
Matrix and Vector Calculations
This section introduces the basic calculation methods for matrices and vectors by MATLAB. 2.2.3.1 Addition and Subtraction
Addition and subtraction of matrices are defined just as they are for arrays element-by-element. Addition and subtraction of matrices A and B are done as follows. X=A+B X = 3 6 4 4 2 2 〉〉 Y=X-A Y = 2 4 2 3 1
1
9 6 6
8 4 4
Addition and subtraction require both matrices to have the same dimension. If the dimensions are incompatible, an error occurs. 〉〉
X=A+u Error using = =>
+
Matrix dimensions must agree. 〉〉
w=v+s
w = 8
6
8
34
Simulation and Software Radio for Mobile Communications
2.2.3.2 Vector Products and Transpose
A row vector and a column vector of the same length can be multiplied in either order. The following are two examples. x=v*u x = 5 〉〉 x=u*v x = 2 -2 1 -1 4 -4
2 1 4
2.2.3.3 Matrix Multiplication
The multiplication of matrices is defined in a way that reflects the composition of the underlying linear transformations and allows for the compact representation of systems of simultaneous linear equations. The matrix product C = A ∗ B is defined when the column dimension of A is equal to the row dimension of B, or when one of them is a scalar. If A is m-by-p and B is p-by-n, their product C is m-by-n. The next two examples illustrate the fact that matrix multiplication is not commutative; A ∗ B is usually not equal to B ∗ A . 〉〉 X=A*B X = 7 8 6
〉〉
11 20 13 28 9 20 Y=B*A
Y = 18 12 7
16 11 7
26 16 11
Moreover, the power of the matrix (e.g., Z = A ∗ A = A ^ 2 ) is defined as 〉〉 Z=A^2 Z = 6 6 5
5 7 5
7 8 7
General Definition of Simulation Tools
35
A matrix can be multiplied on the right by a column vector and on the left by a row vector. 〉〉
x=A*u
x = 8 13 11 〉〉 y=v*B y = 1 2 8
2.2.3.4 Element-by-Element Calculation
If you have two vectors a = [a1, a2, a3, … aN ] and b = [b1, b2, b3, … bN ], and you would like to obtain vector c = [A!a1∗b1, a2 ∗ b2, a3 ∗ b3, … bN ∗ bN ], you can use the .* command. 〉〉
c=a .* b
Moreover, if you would like to obtain vector c = [a1/b1, a2/b2, a3/b3, … aN /bN ], you can use the ./ command. 〉〉
c=a ./ b
Moreover, if you would like to obtain vector c = [a1^b1, a2^ b2, a3^ b3, … a N^bN ], you can use the .^ command. 〉〉 c=a .^ b The following two examples illustrate the above calculations by using a = [4, 9, 8], b = [4, 3, 4]. 〉〉 a=[4,9,8] a =
〉〉
4 9 8 b=[4,3,4]
b =
〉〉
4 3 4 c=a.*b
c = 16
27
32
36
Simulation and Software Radio for Mobile Communications
〉〉 c=a./b c = 1.0000 c=a.^b
〉〉
3.0000
2.0000
c = 256
729
4096
These calculations are also valid for matrices, as shown by the following examples. 〉〉
C=A.*B
C = 2 4 1
〉〉 C = 2 1 1
〉〉
8 8 3 8 1 8 C=B./A 2 8 3 2 1 2 C=A.^B
C = 1 4 1
16 1 1 16 1 16
Table 2.1 summarizes the MATLAB arithmetic operators. 2.2.4
Relational Operators
MATLAB provides the relational operators shown in Table 2.2. These operators relate two vectors or two matrices; elements where the specified relation is true receive the value 1, whereas elements where the relation is false receive the value 0. The following illustrates the effect of several relational operators. 〉〉
A=[ 1 -1 -1; 1 1 1; -1 1 1]
A = 1 1 -1
-1 1 1
-1 1 1
General Definition of Simulation Tools Table 2.1 Arithmetic Operators in MATLAB +
Addition
.^
Power (element-by-element)
−
Subtraction
(vector)
Transpose
.∗
Multiplication (element-by-element)
∗
Matrix multiplication
./
Right division (element-by-element)
/
Matrix, right division
+
Unary plus
^
Matrix power
−
Unary minus
Table 2.2 Relational Operators in MATLAB <
Less than
>=
Greater than or equal to
<=
Less than or equal to
==
Equal to
>
Greater than
∼=
Not equal to
〉〉 B=[1 1 -1; -1 -1 -1; 1 -1 1] B = 1 1 -1 -1 -1 -1 1 -1 1 〉〉 AB ans = 0 0 0 1 1 1 0 1 0 〉〉 A>=B ans =
37
38
Simulation and Software Radio for Mobile Communications
1 1 0
0 1 1 1 1 1 〉〉 A= =B ans = 1 0 1 0 0 0 0 0 1 〉〉 A~=B ans = 0 1 0 1 1 1 1 1 0
2.2.5
Logical Operators
MATLAB provides the logical operators shown in Table 2.3. An expression using the AND operator, &, is true if both operands are logically true. In numeric terms, the expression is true if both operands are nonzero. The following example shows its effect. 〉〉 u = 2
〉〉 v = 2
u=[ 2
0
1
0
0
0 1 0 0 2 v=[ 2 1 3 0 1
1 3 u & v ans = 1 0 1
0
1
0
0
0
0
2 ]
0]
〉〉
Elements having the value 1 indicate that the corresponding elements of u and v both are nonzero. An expression using the OR operator, |, is true if one operand is logically true or if both operands are logically true. An OR expression is false only if both operands are false. In numeric terms, the expression is false only if both operands are zero. The following example shows its effect. Table 2.3 Logical Operators in MATLAB &
AND
|
OR
∼
NOT
General Definition of Simulation Tools
39
〉〉 u | v ans = 1 1
1
0
1
1
An expression using the NOT operator, ∼, negates the operand. This produces a false result if the operand is true and a true result if it is false. In numeric terms, any nonzero operand becomes zero, and any zero operand becomes one. The following example shows its effect. 〉〉 ~u ans = 0 1 2.2.6
0
1
1
0
Flow Control
There are seven flow control statements in MATLAB, as shown in Table 2.4. We will use only five flow control statements: if, switch, while, for, and break in this book. 2.2.6.1 if, else, and elseif
The command, if, evaluates a logical expression and executes a group of statements based on the value of the expression. The syntax is: logical_expression statements elseif statements end if
Table 2.4 Flow Control Operators in MATLAB if
Together with else and elseif, executes a group of statements based on some logical condition
switch
Together with case and otherwise, executes different groups of statements depending on the value of some logical condition
while
Executes a group of statements an indefinite number of times, based on some logical condition
for
Executes a group of statements a fixed number of times
break
Terminates execution of a for or while loop
try...catch Changes flow control if an error is detected during execution return
Causes execution to return to the invoking function
40
Simulation and Software Radio for Mobile Communications
If the logical expression is true (1), MATLAB executes all the statements between the if and end lines. It resumes execution at the line following the end statement. If the condition is false (0), MATLAB skips all the statements between the if and end lines, and resumes execution at the line following the end statement. The following is an example of using the if command. [Program] k=1 if k= =1 fprintf( ‘Ok \n’); end [Result] Ok
2.2.6.2 switch
The command switch executes certain statements based on the value of a variable or expression. Its basic form is: switch expression ( scalar or string ) case value1 statements case value2 statements . . . otherwise statements end
The block consists of the following elements: • The word switch followed by an expression to be evaluated. • Any number of case groups. These groups consist of the word case
followed by a possible value for the expression, all on a single line. Subsequent lines contain the statements to execute for the given value of the expression. These can be any valid MATLAB statement including another switch block. Execution of a case group ends when MATLAB encounters the next case statement or the otherwise statement. Only the first matching case is executed. • An optional otherwise group. This consists of the word otherwise,
followed by the statements to execute if the expressions value is not handled by any of the preceding case groups. Execution of the otherwise group ends at the end statement.
General Definition of Simulation Tools
41
• An end statement.
The following is an example of using the switch command. [Program] k=1; switch k case 1 fprintf(‘it is 1 \n’); otherwise fprintf(‘It is not 1 \n’); end [Result] It is 1
The example prints out it is 1 on the screen of MATLAB if k is equal to 1; otherwise, it prints out It is not 1. 2.2.6.3 while
The while loop executes a statement or group of statements repeatedly as long as the controlling expression is true (1). Its syntax is: while expression statements end
The following is an example of using the while command. In the example, we calculate a simple summation. [Program] n=1; while n<100 n=n+1; end fprintf(‘%d \n’,n); [Result] 100
2.2.6.4 for
The for loop executes a statement or group of statements a predetermined number of times. Its syntax is for index =start:increment:end statements end
42
Simulation and Software Radio for Mobile Communications
The default increment is 1. You can specify any increment, including a negative one. For positive indexes, execution terminates when the value of the index exceeds the end value; for negative increments, it terminates when the index is less than the end value. For example, we calculate the sum from 1 to 100. [Program] total=0; for n=1:100 total=total+n; end fprintf(‘%d \n’,total); [Result] 5050
2.2.6.5 break
The break statement terminates the execution of a for loop or while loop. When a break statement is encountered, execution continues with the next statement outside of the loop. In nested loops, break exits from the innermost loop only. [Program] n=1; while n<100 n=n+1; if n>=50, break, end end fprintf(‘%d \n’,n); [Result] 50
2.2.7
Custom-Made Functions
Except for the functions described in Section 2.2.6, we will make many built-in functions in MATLAB. If you are interested in these functions, please see the MATLAB textbooks [1]. This section summarizes several remarkable functions used throughout this book. These functions are detailed in Tables 2.52.8. 2.2.8
Hierarchical Programming
Until now, MATLAB has been presented as interpreter type software. However, MATLAB can be used as a programming language like C, C+ +, and FORTRAN. If you write program, the program consists of main-function and subfunction files and has a hierarchical structure. The relationship between
General Definition of Simulation Tools
43
main-function and subfunction files is shown in Figure 2.1. This section studies how to create hierarchically structured programs by means of an example. The objectives in the example are listed as follows: Table 2.5 Remarkable Functions Used in This Book (1) Command
Synopsis
Description
Examples
abs
Y=abs(X)
abs(X) is the absolute value of the elements of X
abs(−5)=5 acos(cos(p))=3.1416 asin(sin(p/2))=1.5708 atan(tan(p/4))=0.7854
abs(3+4i)=5
acos(X) asin(X) atan(X)
Y=acos(X) Y=asin(X) Y=atan(X)
Inverse trigonometric functions
ceil
Y=ceil(X)
ceil(X) rounds the elements of X to the X=[−1.9 −0.2 3.4 5.6 7.0] nearest integer which is greater than ceil(X)=[−1 0 4 6 7] or equal to X
conj
Y=conj(X)
conj(X) is the complex-conjugate of the X=[1+3j 2−5j] elements of X. conj(X)=1.0000 − 3.0000i 2.0000 + 5.0000i
conv
c=conv(a,b)
c=conv(a,b) convolves vectors a and b. a=[1 2 3 4] b=[10 20 30] c(k ) = ∑ a ( j )b (k + 1 − j ) conv(a,b)=[10 40 100 160 170 j 120]
cos(X) sin(X) tan(X)
Y=cos(X) Y=sin(X) Y=tan(X)
Trigonometric functions
cos(p/3)=0.5000 sin(p/6)=0.5000 tan(p/4)=1.0000
erf
y=erf(x)
The error function erf(x) is the integral of the Gaussian distribution function from 0 to x 2 x −t 2 erf( x ) = e p ∫0
x=[1:30] y=erf(x) plot(x,y)
erfc
y=erfc(x)
The complementary error function erfc(x) is the value of the complementary erf(x) 2 ∞ −t 2 erfc( x ) = e = 1 − erf( x ) p ∫x
x=[1:30] y=erfc(x) plot(x,y)
exp
Y=exp(X)
exp(X) returns ex for each element of x
exp(1)=2.7183
fclose
fclose (filename)
Fclose(fid) closes the specified file, if it fid=parameter.txt is open and returns 0 if successful and fopen(fid) −1 if unsuccessful fclose(fid)
44
Simulation and Software Radio for Mobile Communications
Table 2.6 Remarkable Functions Used in This Book (2) Command
Synopsis
Description
Examples
fft ifft
y=fft(x) y=ifft(x)
ifft(x) is the fast Fourier transform (FFT) of vector x. fft(x,n) is the n-point inverse FFT ifft(x) is the inverse FFT of vector x. ifft(x,n) is the n-point inverse FFT
X=[1 1 −1 −1 −1 1 1 −1] fft(ifft(X,8))= [1 1 −1 −1 −1 1 1 −1]
fix
Y=fix(X)
fix(X) rounds the elements of X to integers by eliminating the fractional part.
X=[−1.9 −0.2 3.4 5.6 7.0] fix(X)=[−1,0,3,5,7]
floor
Y=floor(X)
floor(X) rounds the elements of X to the X=[−1.9 −0.2 3.4 5.6 7.0] nearest integers floor(X)=[−2 −1 3 5 7]
fopen
fopen (filename)
fopen(filename,permission) fid=parameter.txt fopen(filename,permission) opens fopen(fid,r) the file name in the mode specified by fclose(fid) permission r: Open the file for reading r+: Open the file for reading and writing w: Delete the contents of an existing file or create a new file and open it for writing w+: Delete the contents of an existing file or create a new file and open it for reading and writing a: Create and open a new file or open an existing file for writing, appending to the end of the file a+: Create and open a new file or open an existing file for reading and writing, appending to the end of the file
1. Generation of Gaussian random data; 2. Calculation of mean and variance by using subfunctions named value and disper. First of all, we define two subfunctions. The first function is for the calculation of mean value. For a data set indata = [a1, a2, a3, … … aN ] which consists of N symbol data, the mean E is given as:
General Definition of Simulation Tools
45
Table 2.7 Remarkable Functions Used in This Book (3) Command
Synopsis
Description
Examples
fprintf
fprintf(fid,format, A,…) fprintf(format,A,…)
fprintf(fid,format, A,…) formats the data in matrix A under control of the specified format string format is a string \n newline \t horizontal tab %d decimal numbers %e exponential notation %f fixed point notation
a=3 b=1.2 c=0.0003 fprintf(%d\t%f\t%e\t% e\n, a,b,c) 3 1.2000 3.0000e-004
fscanf
fscanf(fid,format, size) fscanf(fid,format)
fscanf(fid, format, size) reads fidd=fopen(test.txt); data from the file specified by file fscanf(fidd,%g,[1,1]); identifier fid, converts it according to the specified format string, and returns it in matrix or vector The size is optional n: read n elements into a column vector inf read to the end of the file, [m,n] reads enough elements to fill an m-by-n matrix The format string can consist of %d decimal numbers %e,%f,%g floating point numbers
log
Y=log(X)
log(X) is the natural logarithm of the elements of X
log(exp(1))=1
log10
Y=log10(X)
log10(X) is base 10 logarithm of the elements of X
log10(1000)=3.0000
length
y=length(X)
length(X) calculates the length of vector x.
x=[1,2,3} length(X)=3
rand
Y=rand(m,n)
rand(m,n) is an m-by-n matrix with rand(2,3)=0.5828 uniformly distributed random 0.3340 0.5798 entries. 0.4235 0.4329 0.7604
N
E (indata ) =
∑a k =1
N
k
(2.1)
46
Simulation and Software Radio for Mobile Communications
Table 2.8 Remarkable Functions Used in This Book (4) Command
Synopsis
Description
Examples
randn
Y=randn(m,n)
randn(m,n) is an m-by-n matrix with normally distributed random entries
randn(2,2)= −0.4326 0.1253 −1.1465 −1.6656 0.2877 1.1909
randperm
p=randperm(n)
p=randperm(n) is a random permutation of the integers 1:n
randperm(6) might be the vector [3 2 6 4 1 5] or it might be some other permutation of 1:6
real
X=real(Z)
real(Z) is the real part of the elements of Z
real(2+3.*i)=2
rem
rem(x,y)
rem(x,y) is x−n.∗y where n=fix(x./y) is the integer part of the quotient, x./y.
rem(5,2)=1
round
Y=round(X)
round(X) rounds the elements of X=[−1.9 −0.2 3.4 5.6 7.0] X to the nearest integers round(X)=[−2 0 3 6 7]
sqrt
Y=sqrt(X)
sqrt(X) is the square root of the elements of X
sqrt(2)=1.4142 sqrt(−2)=1.4142 i
sum
Y=sum(X)
sum(X) calculates the sum of vector x
X=[1,2,3] sum(X)=6
Main function. m
idata qdata
Subfunction1. m
iout qout
idata qdata
iout qout
idata qdata
Subfunction2. m
iout qout
Subfunction
Communication of arguments
Figure 2.1 The relationship between main-function and subfunction files.
We will make a subfunction to express (2.1) in MATLAB. We use the following notation:
General Definition of Simulation Tools
47
function [output1, output2, … ] = function_name ( input argument 1 input argument2, … ….) % start of files output variable 1 = calculation equation by using input arguments output variable 2 = calculation equation by using input arguments . . % end of files
where % indicates a comment. You must save the function with a name like function_name.m in a directory of your computer where the extension .m is valid for MATLAB function. As for this function, it is valid if MATLABs current directory is the directory where the function_name.m is saved or if you set MATLABs path by using the setup menu, we will study the procedure to make subfunctions, by using an example in which we make a subfunction to calculate mean value. First, open your favorite editor, like WordPad or mule (emacs) or the MATLAB editors, and create a new file. If you would like to use MATLAB editor, you just type 〉〉
edit
You must create the program file that has a name mvalue.m shown in Program 2.1. In this case, the number of input and output arguments both equal one. In the function, we add all the elements in a vector and divide the sum by the length of input vector. The use of commands sum and length is described in Section 2.2.7. Using them, we make subfunctions that can calculate dispersion and standard deviation. The dispersion and the standard deviation for a vector indata = [a1, a2, a3, …, aN] is given as follows: N ∑ a ∑ ak V (indata ) = k =1 − k =1 N N N
2 k
s (indata ) = V (indata )
2
(2.2)
(2.3)
The next subfunction has two output arguments that are dispersion-value and standard deviationvalue. We define the output dispersion and output standard deviation as sigma2 and sigma, respectively. In addition, we utilize a vector indata as the input argument. The input data is given in Program 2.2.
48
Simulation and Software Radio for Mobile Communications
The program must be saved in the same directory as mvalue.m. Save it with the name disper.m. So far, we have made two subfunctions. Next, we will try to make the main function. Please open a new file, and then make a program and save it with the program name main.m in the same directory as the subfunctions. The main.m is given Program 2.3 where random data is generated automatically, and the values of mean and dispersion are calculated. After making the program, enter the directory that has mvalue.m, disper.m, and main.m and execute main.m, then you should obtain the data below. 〉〉 main meanvalue = 0.522608 dispersion = 0.111834 standard deviation=0.334415
As a result, we can utilize mean, dispersion, and standard deviation values in main function and shrink the volume of main function. In this book, we will produce many subfunctions. By the end you should have a good database for the functions.
2.3 Data Generation and Bit Error Rate We analyze the bit error rate to evaluate system performance. This section defines bit error probability and shows how to calculate the BER with computer software with a few examples. Using the above example, we generate data, consisting of a 1-by-10 vector and the element in the data consists of 0 or 1. The vector, which is named txdata, is given as follows: 〉〉 txdata = rand(1,10) > 0.5 txdata = 1 0 1 0 1 1 0 0 1
0
If an error occurs on the communication channel and txdata(1,7) changes from 0 to 1, the received data rxdata is given as follows 〉〉 〉〉
rxdata = txdata ; rxdata(1,7)=1
〉〉 rxdata(1,9)=0 rxdata = 1 0 1 0 1
1
1
0
0
0,
where the underlined data represents errors. By using transmitted data, txdata, and received data, rxdata, we count the number of transmitted pieces of data and the number of errors.
General Definition of Simulation Tools
49
To count the number of transmitted pieces of data, we need only the length of txdata. MATLAB has a good command for the calculation of vector sizethat is, length. We define the number of transmitted data as nod: 〉〉 nod = length(txdata) nod = 10
To calculate the number of errors, we execute the following procedure. First, we subtract the transmitted data txdata from the received data rxdata. If no error exists, you obtain a zero vector with the length of nod. Otherwise, you obtain a nonzero vector in which -1 or 1 data occurs at the error positions. The subtraction vector is defined as subdata, which is given as follows: 〉〉 subdata=rxdata-txdata subdata = 0 0 0 0 0 0 1 0
-1
0
As you can see in the vector subdata, if an element in txdata changes from 0 to 1 because of an error, the element of vector subdata at the error position becomes 1. On the other hand, if an element in txdata changes from 1 to 0 because of an error, the element of vector subdata at the error position becomes -1. By taking the absolute value of the subdata elements, we can make vector that has 1 at each error element. 〉〉 abs(subdata) ans = 0 0 0 0 0
0
1
0
1
0
By adding all elements in the vector abs(subdata), we can calculate the number of errors. For the element summation, MATLAB also has a good command, sum . If the number of errors is noe, we obtain, by utilizing the command sum , 〉〉 noe=sum(abs(subdata)) noe = 2
Therefore, we can calculate the bit error probability by using noe and nod. We define the bit error rate as ber, which is given by dividing noe by nod as follows: 〉〉 ber=noe/nod ber = 0.2000
We use this procedure to obtain the BER throughout this book.
50
Simulation and Software Radio for Mobile Communications
2.4 Definition of a Radio Communication Channel This book analyzes system performance under AWGN and/or multipath fading environments. This section explains AWGN and multipath fading and shows how to simulate an AWGN and multipath fading environment by MATLAB. 2.4.1
AWGN Channel
If we construct a mathematical model for the signal at the input of the receiver, the channel is assumed to corrupt the signal by the addition of white Gaussian noise, as illustrated in Figure 2.2 [2]. When we define transmitted signal, white Gaussian noise, and received signal as s(t), n (t ), and r (t), the received signal is r (t ) = s (t ) + n(t )
(2.4)
where n (t) is a sample function of the AWGN process with probability density function (pdf ) and power spectral density as follows: Φnn ( f ) =
1 N 0 [ W/Hz] 2
(2.5)
where N0 is a constant and often called the noise power density. To simulate in MATLAB, we simply use the built-in function randn, which generates random numbers and matrices whose elements are normally distributed with mean 0 and variance 1. Therefore, if we add AWGN noise with power 1 to the digital s(t)
r(t) n(t)
Additive white Gaussian noise pdf of power spectrum density
Amplitude
pdf Variance = power
1 N 2 0
t
Figure 2.2 Example of an AWGN channel.
f
0
Amplitude
General Definition of Simulation Tools
51
modulation signal with in-phase channel (I-channel) and quadrature-phase channel (Q-channel) data vectors, idata and qdata, respectively, the output data of I channel and Q channel, iout and qout, are given as follows: iout (t ) = idata(t ) + randn(t ) qout (t ) = qdata(t ) + randn(t )
(2.6)
However, in the simulation, we sometimes calculate the BER performance by varying the noise power, where we define the noise power as a variable, npow. idata and qdata are voltages, not powers. Therefore, we must change the notation of npow from power to voltage. We define a variable attn as the root of npow as attn =
1 npow 2
(2.7)
Therefore, the revised output data after contamination from noise with a power of npow becomes iout (t ) = idata(t ) + attn × randn(t ) qout (t ) = qdata(t ) + attn × randn(t )
(2.8)
Program 2.4 can add AWGN to the input data, which is expressed as digital quadrature phase modulation. For the input data, we use idata and qdata. The output data are iout and qout. We only input attn, idata, and qdata, to set the noise-contaminated signal. 2.4.2
Rayleigh Fading Channel
The path between the base station and mobile stations of terrestrial mobile communications is characterized by various obstacles and reflections. For example, an indoor environment has business machines and furniture, and buildings and trees constitute an outdoor environment. These have a large influence on the received signal, when the radio wave is propagated from the base station to the mobile station. The general characteristics of radio wave propagation in terrestrial mobile communications are shown in Figure 2.3. The radio wave transmitted from a base station radiates in all directions these radio waves, including reflected waves that are reflected off of various obstacles, diffracted waves, scattering waves, and the direct wave from the base station to the mobile station. In this case, since the path lengths of the direct, reflected,
52
Simulation and Software Radio for Mobile Communications
qn
Figure 2.3 Principle of multipath channel.
diffracted, and scattering waves are different, the time each takes to reach the mobile station will be different. In addition the phase of the incoming wave varies because of reflections. As a result, the receiver receives a superposition consisting of several waves having different phase and times of arrival. The generic name of a radio wave in which the time of arrival is retarded in comparison with this direct wave is called a delayed wave. Then, the reception environment characterized by a superposition of delayed waves is called a multipath propagation environment. In a multipath propagation environment, the received signal is sometimes intensified or weakened. This phenomenon is called multipath fading, and the signal level of the received wave changes from moment to moment. Multipath fading raises the error rate of the received data, when a digital radio signal is transmitted in the mobile communication environment. A compensation method for this multipath fading must be used to ensure a high transmission performance. This section discusses the concept of multipath fading and explains a programming method for simulations of multipath fading.
General Definition of Simulation Tools
53
Let us begin with the mechanism by which fading occurs [3, 4]. The delayed wave with incident angle qn is given by (2.9) corresponding to Figure 2.3, when a continuous wave of single frequency fc (Hz) is transmitted from the base station.
[
]
rn (t ) = Re e n (t ) exp j (2pf c t )
(2.9)
where Re[] indicates the real part of a complex number that gives the complex envelope of the incoming wave from the direction of the number n. Moreover, j is a complex number. en(t) is given in (2.10) by using the propagation path length from the base station of the incoming waves: Ln (m), the speed of mobile station, n (m/s), and the wavelength, l(m). 2p(L n − nt cos q n ) e n (t ) = R n (t ) exp j − + fn l
(2.10)
= x n (t ) + jy n (t ) where Rn and fn are the envelope and phase of the nth incoming wave. xn(t) and yn(t) are the in-phase and quadrature phase factors of en(t ), respectively. The incoming nth wave shifts the carrier frequency as n cos qn /l (Hz) by the Doppler effect (Hz). This is called the Doppler shift in land mobile communication [3, 4]. This Doppler shift, which is described as fd , has a maximum value of n/l, when the incoming wave comes from the running direction of mobile station in cos qn = 1. Then, this maximum is the largest Doppler shift. The delayed wave that comes from the rear of the mobile station also has a frequency shift of −fd (Hz). It is shown by (2.11), since received wave r (t) received in mobile station is the synthesis of the above-mentioned incoming waves, when the incoming wave number is made to be N. N
r (t ) = ∑ rn (t ) n =1
N = Re ∑ e n (t ) exp j (2pf c t ) n =1
[
(2.11)
]
= Re (x (t ) + jy (t ))(cos 2pf c t + j sin 2pf c t )
= x (t ) cos 2pf c t − y (t ) sin 2pf c t where x (t) and y (t) are given by
54
Simulation and Software Radio for Mobile Communications
N
x (t ) = ∑ x n (t ) n =1 N
(2.12)
y (t ) = ∑ y n (t ) n =1
and x (t) and y (t) are normalized random processes, having an average value of 0 and dispersion of s, when N is large enough. We have (2.13) for the combination probability density p(x,y ), where x = x(t), y = y (t) p(x , y ) =
x2 + y2 1 exp 2ps 2 2s 2
(2.13)
In addition, it can be expressed as r (t) using the amplitude and phase of the received wave. r (t ) = R (t ) cos(2pf c t + q(t ))
(2.14)
R (t ) and q(t) are given by R (t ) = R = x 2 + y 2 q(t ) = q = tan
−1
[ y /x ]
(2.15)
By using a transformation of variables, p (x, y ) can be converted into p (R, q) p(R , q) =
R2 R exp − 2 2s 2ps 2
(2.16)
By integrating p (R, q) over q from 0 to 2, we obtain the probability density function p(R) p(R ) =
R2 R exp − 2 2s s2
(2.17)
Moreover, we can obtain the probability density function p(q) by integrating p(R, q)over R from 0 to ∞. p( q ) =
1 2p
(2.18)
General Definition of Simulation Tools
55
From these equations, the envelope fluctuation follows a Rayleigh distribution, and the phase fluctuation follows a uniform distribution on the fading in the propagation path. Next, let us try to find an expression for simulations of this Rayleigh fading. Here, the mobile station receives the radio wave as shown in Figure 2.3, the arrival angle of the receiving incoming wave is uniformly distributed, and the wave number of the incoming waves is N. In this case, the complex fading fluctuation in an equivalent lowpass system is [3, 4] r (t ) = x (t ) + j ⋅ y (t ) 2 pn 1 2 N 1 pn sin cos(2pf d t ) = t + cos2pf d cos ∑ N1 N 1 +1 N 1 + 1 n =1 N 1 2 pn 2 N 1 pn +j sin t cos2pf d cos ∑ N 1 n =1 N 1 N1
(2.19)
where N2 is an odd number and N1 is given by N1 =
1N − 1 2 2
(2.20)
In this case, the following relations are satisfied
[ ] (t )] = 0
E[x I2 (t )] = E y Q2 (t ) =
[
E x I (t ) y Q
1 2
(2.21)
and it is shown that the result of (2.19) takes the form of Program 2.5. In Program 2.5, the output signal is obtained by inputting the complex modulating signal formed by the transmitter and expressing it in an equivalent lowpass system. Next, let us discuss how a multipath propagation environment can be simulated. In the multipath propagation environment, the mobile station receives not only the direct wave but also delayed waves caused by reflection, diffraction, and scattering that reach the time later than the direct wave. The model of the relationship between this direct wave and the delayed wave is shown in Figure 2.4. It is clear that the amplitude has a Rayleigh distribution and that the phase has a uniform distribution when we observe the received signal at the
56
Simulation and Software Radio for Mobile Communications Delay profile 4
1 2
3
Delayed waves
3 4
Receiver
2 1
0
2 Transmitter
t1 t2
t3
Normalized time
3 Direct wave 4
Figure 2.4 The configuration of multipath fading channel.
arrival time. It is also clear that there are fixed ratios of the average electric powers of the direct and delayed waves. That is to say, we have only to give the relative signal level and relative delay time of delayed waves in comparison with the direct wave, when this multipath propagation environment is simulated; its flowchart is shown in Figure 2.5. The program for simulations of multipath fading is given in Programs 2.6 and 2.7. In Program 2.6, we input the time resolution, relative signal levels, and relative delay times of the direct and delayed waves, a complex modulating signal formed by the transmitter and expressed in an equivalent lowpass system, and the simulation time for one simulation loop. Consider, as an example, the case of a simulation time at one simulation loop and a minimum time resolution of simulation use 50 ms and 0.5 ms, respectively. It is assumed that three delayed waves have mean powers of 10 dB, 20 dB, and 25 dB smaller than that of the direct wave, respectively, and that the relative arrival times were retarded with respect to the direct wave by 1, 1.5, and 2.0 ms, respectively. In this case, the input variable for the multipath fading simulator is tstp = 0.5.*10.^(-6); itau = [0 floor(1.*10.^(-6)/tstp) floor(1.5.*10.^(-6)/tstp) floor(2.0.*10.^(-6)/tstp)]= [0, 2, 3, 4]; dlvl = [0,10, 20,25]; nsamp = 50.*10.^(-6)/tstp = 100;
The parameter is set using such expressions for the simulator. Next, we describe the operation of the multipath fading simulator. To begin, the input signal is
General Definition of Simulation Tools
57
Start j = 0 Input parameters
For delayed wave #j
Shift of input data by delayed time
Input I ch data Input Q ch data Delayed time Signal power of delayed waves Time resolution Simulation time in one simulation Fading counter
: idata : qdata : itau : dlvl : tstp : nsamp : itn
j=j+1 Fade for the shifted signal by subfunction
Output data Output Ich data: iout Output Qch data: qout
n
j = the number of delayed wave y end
Figure 2.5 The flowchart to obtain the Rayleigh fading channel.
delayed by using the input parameters. Next, Rayleigh fading is added to the delayed signals. Only the number of delayed waves set in the parameter repeats this process. All are added afterwards. As a result, the output signal taken from the multipath Rayleigh fading is obtained. One problem exists in this case: Generally speaking, the distribution of Rayleigh must be independent for each delay time. However, in this simulation, the distributions are the same, because fading waveforms of all transmission paths are generated by a function. This characteristic is shown in Figure 2.6. Therefore, the technique that let the fading in each delay time generate independently is needed. There are various methods for generating an independently fading delay time, and here, the fading counter method is shown as an example. A fading counter gives the start time of fading generation to a fading generator such as fade.m. Figure 2.6 shows a fluctuated signal generated by a fading generator. In the simulation, we use a fading generator; therefore, there is only one generated waveform of fading. If the fading generators for all direct and delayed waves are started simultaneously by setting fading counters for both waves the same, all fading waveforms are the same as in Figure 2.6. However, if we give different
58
Simulation and Software Radio for Mobile Communications Signal fluctuation by a fading simulator
Time Start time to generate a direct and a delayed wave
Time (a)
Time (b) Figure 2.6 Signal fluctuation by a fading simulator when the start time to generate a direct and a delayed wave is the same: (a) generated signal fluctuation for a direct wave and (b) generated signal fluctuation for a delayed wave.
start times of fading generation to all direct and delayed waves by setting the fading counters differently, as shown in Figure 2.7, the waveforms of the generated fadings in each propagation path will be different. Therefore, we can simulate an independently distributed Rayleigh fading environment.
General Definition of Simulation Tools
59
Signal fluctuation by a fading simulator
Time Start time to generate a direct wave
Start time to generate a delayed wave
Time (a)
Time (b)
Figure 2.7 Signal fluctuation by a fading simulator when the start time to generate a direct and a delayed wave is different: (a) generated signal fluctuation for a direct wave and (b) generated signal fluctuation for a delayed wave.
For this sefade.m, shown in Program 2.6, we use the evaluation program shown in Program 2.8. The initial value of the fading counter is given in this evaluation program. The size of the vector of this fading counter is equal to the size of the vector that expresses the delay time of the delayed wave and the size of the vector that shows the relative power level of the delayed wave. Then, the
60
Simulation and Software Radio for Mobile Communications
Update time Observation time Start point for for loop 1 loop 2
Fading counter for loop 4
for loop 6
for loop 8
for loop 10
for loop 12
(a)
Update time Observation time Start point for loop 1
Fading counter Start point for loop 2
Start point for loop 3
Start point for loop 4
Start point for loop 5
(b) Figure 2.8 Relationship between the observation time and the update time: (a) observation time = update time and (b) observation time < update time.
Rayleigh fading is independently formed in each delay time, by setting the counter adaptively. The fading counter is updated after each simulation loop by adding a value, itnd0, corresponding to the simulation time to it. One hundred points are added after each simulation loop in a case of a minimum time resolution of 0.5 ms and an observation time of 50 ms. The added value is called the update time. The update time can be adjusted to reduce the simulation time. Figure 2.8 shows the simulated signal levels caused by a fading when the update time is equal to the observation time [Figure 2.8(a)] and when the update time is larger than the observation time [Figure 2.8(b)]. When the update time is equal to the observation time, we can evaluate a transmission performance under a continuous-changed signal level. However, it takes a long time to stabilize the simulated performance, because the distribution of the signal fluctuation becomes Rayleigh by many simulation loops. On the other hand, when the update time is larger than the observation time, we can evaluate the transmission performance under Rayleigh fading with a small number of simulation loops as shown in Figure 2.8(b). However, the simulation result may not be
General Definition of Simulation Tools
61
precise. We therefore had better increase the update time when we check the transmission performance briefly. This multipath fading simulator will be used in the rest of the discussions in this book.
2.5 Conclusion This chapter introduced the simulation language that will be used throughout this book. Using the simulation language, we created several general-purpose functions used frequently that will be employed in subsequent chapters. Chapter 3s method for simulating a mobile communication system is based on the discussions and tutorials of this chapter.
References [1]
MathWorks Inc., MATLAB Using MATLAB.
[2]
Proakis, J. G., Digital Communications, 3rd ed., New York: McGraw-Hill, 1995.
[3]
Jakes, W. C., Microwave Mobile Communications, New York: IEEE Press, 1994.
[4]
Sampei, S., Applications of Digital Wireless Technologies to Global Wireless Communications, Upper Saddle River, NJ: Prentice Hall, 1997.
62
Simulation and Software Radio for Mobile Communications
Appendix 2A Program 2.1 % Program 2-1 % % calculate average % % Programmed by H. Harada % function outdata = mvalue(indata) %*********************** variables ********************** % indata : Input data %******************************************************** outdata=sum(indata)/length(indata); % ********************* end of file *********************
Program 2.2 % % % % % % %
Program 2-2 disper.m calculate dispersion and standard deviation Programmed by H. Harada
function
[sigma2, sigma]=disper(indata)
%*********************** variables ********************** % indata : Input data % sigma2 : dispersion % signa : standard deviation %******************************************************** % calculate average value mvalue= sum(indata)/length(indata); % calculate square average sqmean= sum(indata.^2)/length(indata); % calculate dispersion sigma2=sqmean-mvalue^2; % calculate standard deviation sigma=sqrt(sigma2); %******************** end of file *********************
General Definition of Simulation Tools Program 2.3 % % % % % % % %
Program 2-3 main.m calculate mean, dispersion and standard deviation for the vector data Programmed by H. Harada
data=rand(1,20); mvalue2=mvalue(data); [sigma2, sigma]= disper(data); fprintf( ‘meanvalue = %f \n’,mvalue2); fprintf( ‘dispersion = %f \n’, sigma2); fprintf( ‘standard deviation=%f \n’,sigma); %******************** end of file *********************
Program 2.4 % % % % % % %
Program 2-4 comb.m Generate additive white gaussian noise Programmed by H. Harada
function [iout,qout] = comb (idata,qdata,attn) %*********************** variables ******************** % idata : input Ich data % qdata : input Qch data % iout output Ich data % qout output Qch data % attn : attenuation level caused by Eb/No or C/N %****************************************************** iout = randn(1,length(idata)).*attn; qout = randn(1,length(qdata)).*attn; iout = iout+idata(1:length(idata)); qout = qout+qdata(1:length(qdata)); %******************** end of file *********************
63
64
Simulation and Software Radio for Mobile Communications
Program 2.5 % % % % % %
Program 2-5 fade.m Generate Rayleigh fading Programmed by H. Harada
function [iout,qout,ramp,rcos,rsin]=fade(idata,qdata,... nsamp,tstp,fd,no,counter,flat) %********************** variables ********************* % idata : input Ich data % qdata : input Qch data % iout : output Ich data % qout : output Qch data % ramp : Amplitude contaminated by fading % rcos : Cosine value contaminated by fading % rsin : Cosine value contaminated by fading % nsamp : Number of samples to be simulated % tstp : Minimum time resolution % fd : maximum doppler frequency % no : number of waves in order to generate fading % counter : fading counter % flat : flat fading or not % (1-flat (only amplitude is fluctuated),0-normal % (phase and amplitude are fluctutated)) %****************************************************** if fd ~= 0.0 ac0 = sqrt(1.0 ./ (2.0.*(no + 1))); % power normalized constant(ich) as0 = sqrt(1.0 ./ (2.0.*no)); % power normalized constant(qch) ic0 = counter; % fading counter pai = 3.14159265; wm = 2.0.*pai.*fd; n = 4.*no + 2; ts = tstp; wmts = wm.*ts; paino = pai./no; xc=zeros(1,nsamp); xs=zeros(1,nsamp); ic=[1:nsamp]+ic0; for nn = 1: no cwn = cos( cos(2.0.*pai.*nn./n).*ic.*wmts ); xc = xc + cos(paino.*nn).*cwn;
General Definition of Simulation Tools xs = xs + sin(paino.*nn).*cwn; end cwmt = sqrt(2.0).*cos(ic.*wmts); xc = (2.0.*xc + cwmt).*ac0; xs = 2.0.*xs.*as0; ramp=sqrt(xc.^2+xs.^2); rcos=xc./ramp; rsin=xs./ramp; if flat ==1 iout = sqrt(xc.^2+xs.^2).*idata(1:nsamp); % output signal(ich) qout = sqrt(xc.^2+xs.^2).*qdata(1:nsamp); % output signal(qch) else iout % qout % end
= xc.*idata(1:nsamp) - xs.*qdata(1:nsamp); output signal(ich) = xs.*idata(1:nsamp) + xc.*qdata(1:nsamp); output signal(qch)
else iout=idata; qout=qdata; end %********************* end of file ********************
Program 2.6 % % % % % % %
Program 2-6 sefade.m This function generates frequency selecting fading... Programmed by H. Harada
function[iout,qout,ramp,rcos,rsin]=sefade(idata,qdata, itau,dlvl,th,n0,itn,n1,nsamp,tstp,fd,flat) %********************** variables ********************* % idata input Ich data % qdata input Qch data % iout output Ich data % qout output Qch data % ramp : Amplitude contaminated by fading % rcos : Cosine value contaminated by fading % rsin : Cosine value contaminated by fading
65
66
Simulation and Software Radio for Mobile Communications
% itau : Delay time for each multipath fading % dlvl : Attenuation level for each multipath fading % th : Initialized phase for each multipath fading % n0 : Number of waves in order to generate each % multipath fading % itn : Fading counter for each multipath fading % n1 : Number of summation for direct and delayed % waves % nsamp : Total number of symbols % tstp : Minimum time resolution % fd : Maximum doppler frequency % flat flat fading or not % (1-flat (only amplitude is fluctuated),0-normal(phase % and amplitude are fluctuated)) %****************************************************** iout = zeros(1,nsamp); qout = zeros(1,nsamp); total_attn = sum(10 .^( -1.0 .* dlvl ./ 10.0)); for k = 1 : n1 atts = 10.^( -0.05 .* dlvl(k)); if dlvl(k) = 40.0 atts = 0.0; end theta = th(k) .* pi ./ 180.0; [itmp,qtmp] = delay (idata,qdata,nsamp,itau(k)); [itmp3,qtmp3,ramp,rcos,rsin] = fade (itmp,qtmp,... nsamp,tstp,fd,n0(k),itn(k),flat); iout = iout + atts .* itmp3 ./ sqrt(total_attn); qout = qout + atts .* qtmp3 ./ sqrt(total_attn); end %******************** end of file *********************
Program 2.7 % Program 2-7 % delay.m % Gives delay to input signal% % Programmed by H. Harada % function [iout,qout] = delay(idata,qdata,nsamp,idel ) %********************** variables *********************
General Definition of Simulation Tools % idata input Ich data % qdata input Qch data % iout output Ich data % qout output Qch data % nsamp Number of samples to be simulated % idel Number of samples to be delayed %****************************************************** iout=zeros(1,nsamp); qout=zeros(1,nsamp); if idel ~= 0 iout(1:idel) = zeros(1,idel); qout(1:idel) = zeros(1,idel); end iout(idel+1:nsamp) = idata(1:nsamp-idel); qout(idel+1:nsamp) = qdata(1:nsamp-idel); %******************** end of file *********************
Program 2.8 % % % % % % % % % % %
Program 2-8 bpskev.m Evaluation program of fading counter based BPSK transmission scheme This program is one of example simulations that include fading As for the explanation, you can check Chapter 3. Programmed by H. Harada
%****************** Preparation part ****************** % Time resolution % In this case, 0.5us is used as an example tstp = 0.5*1.0e-6; % Symbol rate % In this case we assume that each sample time is equal % to 1/(symbol rate). % In this case 200 kbps is considered. sr = 1/tstp ; % Arrival time for each multipath normalized by tstp % In this simulation four-path Rayleigh fading is % considered itau = [0, 2, 3, 4];
67
68
Simulation and Software Radio for Mobile Communications
% Mean power for each multipath normalized by direct % wave. % In this simulation four-path Rayleigh fading is % considered. % This means that the second path is -10dB less than the % first direct path. dlvl = [0 ,10 ,20 ,25]; % Number of waves to generate fading for each multipath. % In this simulation four-path Rayleigh fading is % considered. % In normal case, more than six waves are needed to % generate Rayleigh fading n0=[6,7,6,7]; % Initial phase of delayed wave % In this simulation four-path Rayleigh fading is % considered. th1=[0.0,0.0,0.0,0.0]; % Number of fading counter to skip (50us/0.5us) % In this case we assume to skip 50 us itnd0=100*2; % % % %
Initial value of fading counter In this simulation four-path Rayleigh fading is considered. Therefore four fading counters are needed.
itnd1=[1000,2000, 3000, 4000]; % Number of direct wave + Number of delayed wave % In this simulation four-path Rayleigh fading is % considered now1=4; % Maximum Doppler frequency [Hz] % You can insert your favorite value fd=200; % Number of data to simulate one loop % In this case 100 data are assumed to consider nd = 100; % You can decide two mode to simulate fading by changing % the variable flat % flat : flat fading or not % (1-flat (only amplitude is fluctuated),0-normal(phase % and amplitude are fluctuated)) flat =1; %******************* START CALCULATION ****************
General Definition of Simulation Tools nloop = 1000; % Number of simulation loop noe = 0; % Initial number of errors nod = 0; % Initial number of transmitted data for iii=1:nloop %******************* Data generation ****************** data=rand(1,nd) > 0.5;
% rand: built in function
%******************* BPSK modulation ****************** data1=data.*2-1;
% Change data from 1 or 0 notation % to +1 or -1 notation
%******************* Fading channel ******************* % Generated data are fed into a fading simulator % In the case of BPSK, only Ich data are fed into % fading counter [data6,data7]=sefade(data1,zeros(1,length(data1)),... itau,dlvl,th1,n0,itnd1,now1,length(data1),tstp,... fd,flat); % Updata fading counter itnd1 = itnd1+ itnd0; %***************** BPSK Demodulation ****************** demodata=data6 > 0; %***************** Bit Error Rate (BER) *************** % count number of instantaneous errors noe2=sum(abs(data-demodata)); % count number of instantaneous transmitted data nod2=length(data); % length: built in function fprintf(‘%d\t%e\n’,iii,noe2/nod2); noe=noe+noe2; nod=nod+nod2; end % for iii=1:nloop %******************* Output result ******************** %ber = noe/nod; fprintf(‘%d\t%d\t%e\n’,noe,nod,noe/nod); % ******************** end of file ********************
69