%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Creative Commons
% Attribution-Noncommercial 2.5 India
% You are free:
% to Share — to copy, distribute and transmit the work
% to Remix — to adapt the work
% Under the following conditions:
% Attribution. You must attribute the work in the manner 
% specified by the author or licensor (but not in any way 
% that suggests that they endorse you or your use of the work). 
% Noncommercial. You may not use this work for commercial purposes. 
% For any reuse or distribution, you must make clear to others the 
% license terms of this work. The best way to do this is with a 
% link to this web page.
% Any of the above conditions can be waived if you get permission 
% from the copyright holder.
% Nothing in this license impairs or restricts the author's moral rights.
% http://creativecommons.org/licenses/by-nc/2.5/in/

% Author	: Krishna
% Email		: krishna@dsplog.com
% Version	: 1.0
% Date		: 18 January 2008
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% script for generting transmit waveforms in a minimum shift 
% keying, a form of continuous phase frequency shift keying

clear all
close all

rand('seed',777); % initializing the random state
N = 7; % number of bits
ipBin = rand(1,N) > 0.5; % binary 0's and 1's

fs = 100;
fc = 1;
T = 1;

ts = [0:1/fs:T]; % generting the sampling instants
ts = ts(1:end-1);
tsR = kron(ones(1,N),ts);

ip =  2*ipBin-1; % converting 0's to -1, 1's to 1

% generating two frequencies corresponding to 0 and 1
% 0 --> fc - 1/4T
% 1 --> fc + 1/4T
fm = ip/(4*T); 
fmR = kron(fm,ones(1,fs)); % repeating

% genertaing the phase
theta = pi/2*filter([0 1],[1 -1],ip);
thetaR = kron(theta,ones(1,fs)); % repeating

xt = cos(2*pi*(fc+fmR).*tsR + thetaR );

% plotting
subplot(3,1,1),plot(kron(ip,ones(1,fs)));
axis([0 N*fs -1.25 1.25]);grid on
subplot(3,1,2), plot(xt);
axis([0 N*fs -1 1]);grid on
subplot(3,1,3),plot(kron(mod(theta*180/pi,360),ones(1,fs)))
axis([0 N*fs -360 360]);grid on






