We have made considerable use of Matlab in previous labs to design filters and determine frequency responses of systems. Matlab is also very useful as a simulation tool.

Use the following Matlab code skeleton to simulate your system
and fill in the incomplete portions. Note that the code is not
complete and will not execute properly as written. How does the
spectrum of the transmitted signal change with

```
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 % Matlab code skeleton for Digital Transmitter
3
4 close all;clear;
5
6 % Generate random bits
7 bits_per_symbol=2;
8 num_symbols=64;
9 numbits=bits_per_symbol*num_symbols;
10 bits=rand(1,numbits)>0.5;
11
12 Tsymb=32; % samples per symbol
13
14
15 % These are the 4 frequencies to choose from
16 % Note that 32 samples per symbol does not correspond to
17 % an integer number of periods at these frequencies
18 omega1 = 9*pi/32;
19 omega2 = 13*pi/32;
20 omega3 = 17*pi/32;
21 omega4 = 21*pi/32;
22
23
24 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25 % Transmitter section
26
27 % Initialize transmit sequence
28 index=1; % Initialize bit index
29 n=1; % Initialize sample index
30 phi=0; % Initialize phase offset
31
32 % Generate 64 32-sample symbols
33 while (n<=num_symbols*Tsymb)
34
35 if (bits(index:index+1) == [0 0])
36 sig(n:n+Tsymb-1) = sin(omega1*[0:Tsymb-1]+phi);
37 phi = omega1*Tsymb+phi; % Calculate phase offset for next symbol
38 phi = mod(phi, 2*pi); % Restrict phi to [0,2*pi)
39
40 % -----------> Insert code here <-------------%
41
42 end % end if-else statements
43
44 index=index+2; % increment bit counter so we look at next 2 bits
45
46 n=n+Tsymb;
47 end % end while
48
49
50 % Show transmitted signal and its spectrum
51 % ---------------> Insert code here <-----------------%
```