?? m_qam.m
字號:
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 1))
Lsymbolev((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 1*ones(1,6*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 0))
Lsymbolev((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 3*ones(1,6*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 0))
Lsymbolev((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 5*ones(1,6*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 1))
Lsymbolev((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 7*ones(1,6*tsampling);
end;
end;
clear i;
elseif orde == 3
%fourbitS to 4 LEVEL SYMBOL CONVERTER
%2-level fourbit to 4-level symbol in Channel-I
for i=1:4:(tbit/2)
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -15*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -13*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -11*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -9*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -7*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -5*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -3*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -1*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 1*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 3*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 5*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 7*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 9*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 0) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 11*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 0))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 13*ones(1,8*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 1) & (splitod(2*(i+2)*tsampling+1) == 1))
Lsymbolod((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 15*ones(1,8*tsampling);
end;
end;
clear i;
%2-level fourbit to 4-level symbol in Channel-Q
for i=1:4:(tbit/2)
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -15*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -13*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -11*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -9*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -7*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -5*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -3*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = -1*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 1*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 3*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 5*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 0) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 7*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 9*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 0) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 11*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 0))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 13*ones(1,8*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 1) & (splitev(2*(i+1)*tsampling+1) == 1) & (splitev(2*(i+2)*tsampling+1) == 1))
Lsymbolev((((i+3)/4)-1)*8*tsampling+1:((i+3)/4)*8*tsampling) = 15*ones(1,8*tsampling);
end;
end;
clear i;
end
Lsymbol_Od = Lsymbolod;
Lsymbol_Ev = Lsymbolev;
% Proses Filtering ========================================================
Lsymbolods = Lsymbol_Od.';
y = Lsymbolods;
nsamp = 4;
rolloff = Alpha;
filtorder = 40; % Filter order
delay = filtorder/(nsamp*2); % Group delay (# of input samples)
rrcfilter = rcosine(1,nsamp,'fir/sqrt',rolloff,delay); % Create a square root raised cosine filter. 'fir/sqrt'
ytx = rcosflt(y,1,nsamp,'filter',rrcfilter); % Upsample and apply square root raised cosine filter.
LshapedI = ytx.';
Lsymbolevs = Lsymbol_Ev.';
y = Lsymbolevs;
nsamp = 4;
rolloff = Alpha;
filtorder = 40; % Filter order
delay = filtorder/(nsamp*2); % Group delay (# of input samples)
rrcfilter = rcosine(1,nsamp,'fir/sqrt',rolloff,delay); % Create a square root raised cosine filter.
ytx = rcosflt(y,1,nsamp,'filter',rrcfilter); % Upsample and apply square root raised cosine filter.
LshapedQ = ytx.';
%PEMBANGKITAN FREKUENSI CARRIER
fc = 100;
fs = length(LshapedI)-1;
ttt = [0:(length(LshapedI)-1)]'./(length(LshapedI)-1);
inphaseosc = cos(2*pi*fc*ttt);
quadratosc = sin(2*pi*fc*ttt);
%INPHASE MODULATION
Yinphase = LshapedI.*inphaseosc.';
%QUADRATURE MODULATION
Yquadrat = LshapedQ.*quadratosc.';
Yqamj = LshapedI + LshapedQ.*j;
Yqam = Yinphase + Yquadrat;
% ==== Kanal ==============================================================
[Yqamrxj RayLj fad1j] = kanale(Yqamj,snr,kanal,shift);
[Yqamrx RayL fad1] = kanale(Yqam,snr,kanal,shift);
% Yqamrx = Yqam;
% ==== End of kanal =======================================================
if orde == 1
A = 2;
elseif orde == 2
A = 3;
elseif orde == 3
A = 4;
end
for i=1:1:tsymbol
LshapedIc(i) = LshapedI(A*tsampling*(2*i-1));
LshapedQc(i) = LshapedQ(A*tsampling*(2*i-1));
end;
% ==== Demod ==============================================================
DemodI = sqrt(2)*Yqamrx.*inphaseosc.';
DemodQ = sqrt(2)*Yqamrx.*quadratosc.';
% Filter received signal using square root raised cosine filter.
ytxI = DemodI.';
yrxI = rcosflt(ytxI,1,nsamp,'Fs/filter',rrcfilter);
yrxI = downsample(yrxI,nsamp); % Downsample.
yrxI = yrxI(2*delay+1:end-2*delay); % Account for delay.
LdetI = yrxI.';
% Filter received signal using square root raised cosine filter.
ytxQ = DemodQ.';
yrxQ = rcosflt(ytxQ,1,nsamp,'Fs/filter',rrcfilter);
yrxQ = downsample(yrxQ,nsamp); % Downsample.
yrxQ = yrxQ(2*delay+1:end-2*delay); % Account for delay.
LdetQ = yrxQ.';
if orde == 1
%Decision-Circuit-I 4-level
for i=1:1:tsymbol
LcompI(i) = LdetI(2*tsampling*(2*i-1));
if (LcompI(i) >= 2)
recLsymbolI(((i-1)*4*tsampling+1):(i*4*tsampling)) = 3*ones(1,4*tsampling);
end;
if ((LcompI(i) >= 0) & (LcompI(i) < 2))
recLsymbolI(((i-1)*4*tsampling+1):(i*4*tsampling)) = 1*ones(1,4*tsampling);
end;
if ((LcompI(i) >= -2) & (LcompI(i) < 0))
recLsymbolI(((i-1)*4*tsampling+1):(i*4*tsampling)) = -1*ones(1,4*tsampling);
end;
if (LcompI(i) < -2)
recLsymbolI(((i-1)*4*tsampling+1):(i*4*tsampling)) = -3*ones(1,4*tsampling);
end;
end;
%Decision-Circuit-Q 4-level
for i=1:1:tsymbol
LcompQ(i) = LdetQ(2*tsampling*(2*i-1));
if (LcompQ(i) >= 2)
recLsymbolQ(((i-1)*4*tsampling+1):(i*4*tsampling)) = 3*ones(1,4*tsampling);
end;
if ((LcompQ(i) >= 0) & (LcompQ(i) < 2))
recLsymbolQ(((i-1)*4*tsampling+1):(i*4*tsampling)) = 1*ones(1,4*tsampling);
end;
if ((LcompQ(i) >= -2) & (LcompQ(i) < 0))
recLsymbolQ(((i-1)*4*tsampling+1):(i*4*tsampling)) = -1*ones(1,4*tsampling);
end;
if (LcompQ(i) < -2)
recLsymbolQ(((i-1)*4*tsampling+1):(i*4*tsampling)) = -3*ones(1,4*tsampling);
end;
end;
%4-level symbol to 2-level tribit in Channel-I
for i=1:1:tsymbol
III(i) = recLsymbolI(4*tsampling*(i-1)+1);
if III(i) == -3
rxdibitI((4*i-4)*tsampling+1:(4*i-2)*tsampling) = ones(1,2*tsampling);
rxdibitI((4*i-2)*tsampling+1:(4*i-0)*tsampling) = ones(1,2*tsampling);
end;
if III(i) == -1
rxdibitI((4*i-4)*tsampling+1:(4*i-2)*tsampling) = ones(1,2*tsampling);
rxdibitI((4*i-2)*tsampling+1:(4*i-0)*tsampling) = zeros(1,2*tsampling);
end;
if III(i) == 1
rxdibitI((4*i-4)*tsampling+1:(4*i-2)*tsampling) = zeros(1,2*tsampling);
rxdibitI((4*i-2)*tsampling+1:(4*i-0)*tsampling) = zeros(1,2*tsampling);
end;
if III(i) == 3
rxdibitI((4*i-4)*tsampling+1:(4*i-2)*tsampling) = zeros(1,2*tsampling);
rxdibitI((4*i-2)*tsampling+1:(4*i-0)*tsampling) = ones(1,2*tsampling);
end;
end;
clear i;
%4-level symbol to 2-level tribit in Channel-Q
for i=1:1:tsymbol
QQQ(i) = recLsymbolQ(4*tsampling*(i-1)+1);
if QQQ(i) == -3
rxdibitQ((4*i-4)*tsampling+1:(4*i-2)*tsampling) = ones(1,2*tsampling);
rxdibitQ((4*i-2)*tsampling+1:(4*i-0)*tsampling) = ones(1,2*tsampling);
end;
if QQQ(i) == -1
rxdibitQ((4*i-4)*tsampling+1:(4*i-2)*tsampling) = ones(1,2*tsampling);
rxdibitQ((4*i-2)*tsampling+1:(4*i-0)*tsampling) = zeros(1,2*tsampling);
end;
if QQQ(i) == 1
rxdibitQ((4*i-4)*tsampling+1:(4*i-2)*tsampling) = zeros(1,2*tsampling);
rxdibitQ((4*i-2)*tsampling+1:(4*i-0)*tsampling) = zeros(1,2*tsampling);
end;
if QQQ(i) == 3
rxdibitQ((4*i-4)*tsampling+1:(4*i-2)*tsampling) = zeros(1,2*tsampling);
rxdibitQ((4*i-2)*tsampling+1:(4*i-0)*tsampling) = ones(1,2*tsampling);
end;
end;
clear i;
elseif orde == 2
%Decision-Circuit-I 8-level
for i=1:1:tsymbol
LcompI(i) = LdetI(3*tsampling*(2*i-1));
if (LcompI(i) < -6)
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = -7*ones(1,6*tsampling);
end;
if ((LcompI(i) >= -6) & (LcompI(i) < -4))
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = -5*ones(1,6*tsampling);
end;
if ((LcompI(i) >= -4) & (LcompI(i) < -2))
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = -3*ones(1,6*tsampling);
end;
if ((LcompI(i) >= -2) & (LcompI(i) < 0))
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = -1*ones(1,6*tsampling);
end;
if ((LcompI(i) >= 0) & (LcompI(i) < 2))
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = 1*ones(1,6*tsampling);
end;
if ((LcompI(i) >= 2) & (LcompI(i) < 4))
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = 3*ones(1,6*tsampling);
end;
if ((LcompI(i) >= 4) & (LcompI(i) < 6))
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = 5*ones(1,6*tsampling);
end;
if ((LcompI(i) >= 6))
recLsymbolI(((i-1)*6*tsampling+1):(i*6*tsampling)) = 7*ones(1,6*tsampling);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -