?? m_qam.m
字號:
fs = length(Y) - 1;
f_dom = fft(Y);
f_dom = 20*log10(abs((f_dom(1:length(f_dom)/2+1))./(max(abs(f_dom))) + 1e-30));
ty = [0:length(f_dom)-1]*fs/length(f_dom)/2;
plot(ty,f_dom); grid on;
title('Inphase Signal (Level Converter Output)'); xlabel('Frequency'); ylabel('Frequency (dBw)')
end;
function pushbutton25_Callback(hObject, eventdata, handles) % l conv Q
global t rxdibitQ rxtribitQ rxfourbitQ orde bit_frame
if isempty(t)==1
msgbox('Push "Submit" !');
else
[pos1 pos2]=posisi_grafik;
if orde == 1
Z = rxdibitQ;
elseif orde == 2
Z = rxtribitQ;
elseif orde == 3
Z = rxfourbitQ;
end
figure('Position',pos1)
stairs(t,Z), grid on, axis([0 bit_frame -0.1 1.1]);
title('Quadrature Signal (Level Converter Output)'); xlabel('Time'); ylabel('Amplitude (V)')
figure('Position',pos2)
fs = length(Z) - 1;
f_dom = fft(Z);
f_dom = 20*log10(abs((f_dom(1:length(f_dom)/2+1))./(max(abs(f_dom))) + 1e-30));
ty = [0:length(f_dom)-1]*fs/length(f_dom)/2;
plot(ty,f_dom); grid on;
title('Quadrature Signal (Level Converter Output)'); xlabel('Frequency'); ylabel('Frequency (dBw)')
end;
function pushbutton26_Callback(hObject, eventdata, handles) % combiner
global t recbit bit_frame
if isempty(t)==1
msgbox('Push "Submit" !');
else
[pos1 pos2]=posisi_grafik;
figure('Position',pos1)
stairs(t,recbit), grid on, axis([0 bit_frame -0.1 1.1]);
title('Data Out');xlabel('Time'); ylabel('Amplitude (V)')
figure('Position',pos2)
fs = length(recbit) - 1;
f_dom = fft(recbit);
f_dom = 20*log10(abs((f_dom(1:length(f_dom)/2+1))./(max(abs(f_dom))) + 1e-30));
ty = [0:length(f_dom)-1]*fs/length(f_dom)/2;
plot(ty,f_dom); grid on;
title('Data Out');xlabel('Frequency'); ylabel('Frequency (dBw)')
end;
function pushbutton27_Callback(hObject, eventdata, handles) % restart
close all
M_QAM
function pushbutton28_Callback(hObject, eventdata, handles) % close
good_bye
function pushbutton29_Callback(hObject, eventdata, handles) % inputkan
global SNR_max jml_itr BR kanal rolloff M snr orde Alpha t Bit Split_Od ...
Split_Ev Lsymbol_Od Lsymbol_Ev ttt LshapedI LshapedQ Yinphase Yquadrat ...
Yqam Yqamrx DemodI DemodQ LdetI LdetQ recLsymbolI recLsymbolQ ...
rxdibitI rxtribitI rxfourbitI rxdibitQ rxtribitQ rxfourbitQ ...
quadratosc inphaseosc recbit RayL rrcfilter fad1 nsamp Yqamj Yqamrxj ...
LcompI LcompQ Lsymbolods Lsymbolevs bit_frame bit_frame_split bagi_waktu ...
Bit_Masukan fs Lsymbolod Lsymbolev QQQ III rolloff
if get(handles.popupmenu1,'value')==1
elseif get(handles.popupmenu1,'value')==2
BR = 1200;
elseif get(handles.popupmenu1,'value')==3
BR = 9600;
elseif get(handles.popupmenu1,'value')==4
BR = 19200;
end
if get(handles.popupmenu2,'value')==1
elseif get(handles.popupmenu2,'value')==2
M = 16;
elseif get(handles.popupmenu2,'value')==3
M = 64;
elseif get(handles.popupmenu2,'value')==4
M = 256;
end
if get(handles.popupmenu3,'value')==1
elseif get(handles.popupmenu3,'value')==2
rolloff = 0;
elseif get(handles.popupmenu3,'value')==3
rolloff = 0.25;
elseif get(handles.popupmenu3,'value')==4
rolloff = 0.5;
elseif get(handles.popupmenu3,'value')==5
rolloff = 0.75;
elseif get(handles.popupmenu3,'value')==6
rolloff = 1;
end
if get(handles.popupmenu4,'value')==1
elseif get(handles.popupmenu4,'value')==2
kanal = 1;
elseif get(handles.popupmenu4,'value')==3
kanal = 2;
end
if get(handles.popupmenu5,'value')==1
elseif get(handles.popupmenu5,'value')==2
snr = 0;
elseif get(handles.popupmenu5,'value')==3
snr = 5;
elseif get(handles.popupmenu5,'value')==4
snr = 10;
elseif get(handles.popupmenu5,'value')==5
snr = 15;
elseif get(handles.popupmenu5,'value')==6
snr = 20;
elseif get(handles.popupmenu5,'value')==7
snr = 25;
end
% =========================================================================
% =========================================================================
% =========================================================================
if get(handles.popupmenu1,'value')==1 |...
get(handles.popupmenu2,'value')==1 |...
get(handles.popupmenu3,'value')==1 |...
get(handles.popupmenu4,'value')==1 |...
get(handles.popupmenu5,'value')==1
msgbox('Unfilled Parameter !!!');
else
if BR == 1200
bagi_waktu = 2;
elseif BR == 9600
bagi_waktu = 4;
elseif BR == 19200
bagi_waktu = 8;
end;
if BR == 1200
bit_frame = 25;
bit_frame_split = 13 + 2;
elseif BR == 9600
bit_frame = 195;
bit_frame_split = 100 + 5;
elseif BR == 19200
bit_frame = 385;
bit_frame_split = 195 + 10;
end
if M == 16
orde = 1;
elseif M == 64
orde = 2;
elseif M == 256
orde = 3;
end
Tb = 1/BR; %perioda 1 bit
tau = 1.0e-6;
shift = round(tau/Tb);
Alpha = rolloff;
Bit_Masukan = BR*0.02;
Jumlah_Bit_Asli = Bit_Masukan;
if orde == 1
Jumlah_Bit = floor(Jumlah_Bit_Asli/4)*4;
elseif orde == 2
Jumlah_Bit = floor(Jumlah_Bit_Asli/6)*6;
elseif orde == 3
Jumlah_Bit = floor(Jumlah_Bit_Asli/8)*8;
end
Bit_Asli = randint(1,Jumlah_Bit);
tsampling = 16;
% Mendapatkan A
for i = 1:tsampling
A(i,:) = Bit_Asli;
end
A;
Bit = reshape(A,1,length(Bit_Asli)*tsampling);
% Mendapatkan B
for i = 1:2*tsampling
B(i,:) = Bit_Asli(1:2:length(Bit_Asli));
end
Split_Od = reshape(B,1,length(Bit_Asli)*tsampling);
% Mendapatkan C
for i = 1:2*tsampling
C(i,:) = Bit_Asli(2:2:length(Bit_Asli));
end
Split_Ev = reshape(C,1,length(Bit_Asli)*tsampling);
t = linspace(0,length(Bit_Asli),length(Bit_Asli)*16);
splitod = Split_Od;
splitev = Split_Ev;
tbit = Jumlah_Bit;
%PARAMETERS
if orde == 1
tdibit = tbit/2;
tsymbol = tbit/4;
elseif orde == 2
ttribit = tbit/3;
tsymbol = tbit/6;
elseif orde == 3
tfourbit = tbit/4;
tsymbol = tbit/8;
end
if orde == 1
%DIBITS to 4 LEVEL SYMBOL CONVERTER
%2-level dibit to 4-level symbol in Channel-I
for i=1:2:tdibit
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 1))
Lsymbolod((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = -3*ones(1,4*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 0))
Lsymbolod((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = -1*ones(1,4*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 0))
Lsymbolod((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = 1*ones(1,4*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 1))
Lsymbolod((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = 3*ones(1,4*tsampling);
end;
end;
clear i;
%2-level dibit to 4-level symbol in Channel-Q
for i=1:2:tdibit
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 1))
Lsymbolev((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = -3*ones(1,4*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (splitev(2*i*tsampling+1) == 0))
Lsymbolev((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = -1*ones(1,4*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 0))
Lsymbolev((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = 1*ones(1,4*tsampling);
end;
if ((splitev(2*(i-1)*tsampling+1) == 0) & (splitev(2*i*tsampling+1) == 1))
Lsymbolev((((i+1)/2)-1)*4*tsampling+1:((i+1)/2)*4*tsampling) = 3*ones(1,4*tsampling);
end;
end;
clear i;
elseif orde == 2
%TRIBITS to 8 LEVEL SYMBOL CONVERTER
%2-level tribit to 8-level symbol in Channel-I
for i=1:3:(tbit/2)
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 1))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = -7*ones(1,6*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 0))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = -5*ones(1,6*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 0))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = -3*ones(1,6*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 1) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 1))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = -1*ones(1,6*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 1))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 1*ones(1,6*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 0) & (splitod(2*(i+1)*tsampling+1) == 0))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 3*ones(1,6*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 0))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 5*ones(1,6*tsampling);
end;
if ((splitod(2*(i-1)*tsampling+1) == 0) & (splitod(2*i*tsampling+1) == 1) & (splitod(2*(i+1)*tsampling+1) == 1))
Lsymbolod((((i+2)/3)-1)*6*tsampling+1:((i+2)/3)*6*tsampling) = 7*ones(1,6*tsampling);
end;
end;
clear i;
%2-level tribit to 8-level symbol in Channel-Q
for i=1:3:(tbit/2)
if ((splitev(2*(i-1)*tsampling+1) == 1) & (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;
if ((splitev(2*(i-1)*tsampling+1) == 1) & (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) == 1) & (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) == 1) & (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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -