clear all;
clc;
Ts = 1e-6; % 秒弊畫�靦 縊徵蝓�
Fc = 900e6; % 脆羲褕� 獗翰題�
%殆遏�'�
%constellation = [1+1i, -1-1i]*cos(pi/4);
constellation = [-1+0i, 1+0i];
constellation2 = [-1-1i -1+1i 1+1i 1-1i];
M = length(constellation); % 忘鼻粽羲� 縊徵蝓� � 翰遏�'�
Framelength = 1024; % 囝嫁鼻熱 粽鼻粽羲� 筏褫�, 攘 閱擇滓�靈�
nSrvBits = 64;
nDataSymb = 44*64; % 忘鼻粽羲� 筏褫� 滓璃� = 頑廈餃隆� + �縴整皖�暴 筏錚
nTrainSymb = 64; % 忘鼻粽羲� 隧粵戴畫贛摸 縊徵蝓�
% 阻擋慮隧� 縊憤��麋�
Nsamp = 16; % 忘鼻粽羲� 貳溫�� 熱 縊徵蝓
%SNR = 25; % ␒準誕粵�� 縊廉畫/蠍�, 暄
headerError = 0; % 私鞣鼻璃� 頡憂餃� 頑廈餃階�
dataError = 0; % 私鞣鼻璃� 頡憂餃� 滓璃�
% Create a local random stream to be used by random number generators
hStr = RandStream('mt19937ar', 'Seed', 55408);
% Generate a column vector of random data bits
data = randi(hStr, [0 1], nDataSymb, 1);
% Reed-Solomon Encoder
hEnc = comm.RSEncoder('BitInput', true,'CodewordLength',15,'MessageLength',11);
encData = step(hEnc, data);
Data1 = reshape (encData,60,64);
% set training bits
tBits0 = [0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 ...
1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1];
tBits1 = [1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 ...
0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0];
%set SRV & blank data
Srv0 = ones(1,64);
Srv1 = [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ...
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1];
Data0 = zeros(60,64);
% Frame0 constructing
frame0 = [tBits0; tBits1; Srv0; Srv0; Data0];
% Frame1 constructing
frame1 = [tBits0; tBits1; Srv1; Srv1; Data1];
frameS = [frame0 frame1];
frame = reshape(frameS,[],1); %64*128 => 8192*1
% Create a BPSK modulator System object
hModulator = comm.BPSKModulator('PhaseOffset',1.0*pi);
% Modulation mapping data
MMData = step(hModulator, frame);
MMMD = reshape(MMData,64,128);
rframe = repmat(MMData, 1, 64);
% orthogonal sequence generation
MSS = [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 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 -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 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 -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 -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 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 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 -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 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 -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 -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 -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 -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 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 -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 -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 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 -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 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 -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 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 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 -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 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 -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 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 -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 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 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 -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 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 -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 -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 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 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 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 -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 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 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 -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 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 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 -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 -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 -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 -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 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 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 -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 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 -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 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 -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 -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 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 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 -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 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 -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 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 -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 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 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;
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 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 -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 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 -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 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 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 -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 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 -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 -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 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 -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 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 -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 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 -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 -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 -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 -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 -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 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 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 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 -1 1 1 1 1 -1 -1 -1 1 -1