.The transmitted signal is single carrier with root raised cosine filter.
• Filter coefficient is 0.3
• Modulation: BPSK
• OSR: 16 in the recording (TDMA125KHzSpan.mat)
The signal has replica of m-sequences (m=6) as training one in the
front the other one at the end of the frame. And the user data is cascaded at end of each
other. The frame structure can be summarized as in [m-seq, data0, data1, data2, data3, m-
seq] and each data part has 91 symbols. Take last 2 digits of your U#, modulo 3 it and the
resulting number is your data (mod(XY,3) = d).
Q1. Demodulate the d th data frame and obtain the text message sent to you.
What I have tried:
clear all
load('/home/sudipta/Documents/Tutorpoint_Assignments/lab_7.mat')
OSR = 16;
seq2 = mseq(2,8);
length1 = length(seq2)*OSR;
length2 = length(seq2)*OSR;
plot(10*log10(abs(Y)));
figure()
pwelch(Y,[],[],[],'centered')
alpha=0.3;
sampling=16;
span=40;
fltr = rcosdesign(alpha,span,sampling,'sqrt');
filtered_signl = filter(fltr,1,Y);
figure()
pwelch(filtered_signl,[],[],[],'centered')
for i = 1:length(filtered_signl)-2*length1
width1 = filtered_signl(i:i+length1-1);
width2 = filtered_signl(i+length1:i+length1+length2-1);
x(i) = abs(width1'*width2);
end
figure()
plot(x)
filtr_p = 5564;
[max_peak,max_time] = max(x)
signlf = filtered_signl(max_time:length(filtered_signl));
scatterplot(signlf);
eyediagram(signlf,32);
for l = 1:length1
mismatch(l) =conj(signlf(l)).*(signlf(length1+l));
angD(l) = angle(mismatch(l));
end
meanf = mean(angD);
for i = 1:7
fltr(i) = (meanf +2*pi*(i-5))/(2*pi*length1*(1/(10e3*OSR)));
end
for q = 1:7
for p = 0:length(filtered_signl)-1
shiftf(p+1) =filtered_signl(p+1).exp(-1i*2*pi*fltr(q)*p(1/(10e3*OSR))) ;
end
end
for p = 0:length(filtered_signl)-1
shiftf(p+1) =filtered_signl(p+1).exp(-1i*2*pi*fltr(2)*p(1/(10e3*OSR))) ;
end
scatterplot(shiftf)
eyediagram(shiftf,32);
tp = repelem(seq2,OSR,1);
n_sequence = [tp;tp];
j1 = n_sequence;
mspeak = 0;
for i = -5*16:5*16
j2 = shiftf(max_time+i:length(j1)+i+max_time-1).';
ans = abs(j2'*j1);
if ans > mspeak
mspeak = ans;
indx_t = max_time+i;
end
end
new_fshift = shiftf(indx_t:indx_t+length1+length2+91*OSR-1);
down = downsample(new_fshift,OSR);
down = new_fshift(8:16:end);
scatterplot(down(2*length(seq2)+1:end))
chnl_com = [down(1:2*length(seq2))]./[seq2',seq2'];
chnl_mean = mean(chnl_com);
chnl_offset = [down(2*length(seq2)+1:end)]./chnl_mean;
scatterplot(chnl_offset);
for r1 = 1:length(chnl_offset)
if real(chnl_offset(r1))>0
offset_signl_(r1) =1;
else
offset_signl_(r1) = 0;
end
end
nshape = reshape(offset_signl_,[],7);
char_com = num2str(nshape);
char_2 = bin2dec(char_com);
char(char_2)
evm_error = 0;
for i = 1:length(chnl_offset)
if real(chnl_offset) >= 0
evm_f(i) = ((real(chnl_offset(i))-1).^2 + imag(chnl_offset(i)).^2);
else
evm_f(i) = ((real(chnl_offset(i))+1).^2 + imag(chnl_offset(i)).^2);
end
end
power_1 = mean(abs(chnl_offset).^2);
EVM = sqrt(sum(evm_f)/(length(chnl_offset)*power_1));