Prelab: Matlab Preparation
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 Tsymb?
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 <-----------------%
0 comments:
Post a Comment