📄 receivertest.asv
字号:
set([handles.btn_Constellation handles.btn_Filtered ...
handles.btn_Noise handles.btn_NoiseFading ...
handles.btn_SaveResult handles.btn_SaveSource ...
handles.rdbtn_SourceSignal handles.rdbtn_IQphase ...
handles.rdbtn_IQphase_Filtered handles.rdbtn_IQphase_Noise ...
handles.rdbtn_IQphase_NoiseFade], 'enable', 'on');
set(handles.rdbtn_SourceSignal, 'value', 1);
set([handles.rdbtn_IQphase, handles.rdbtn_IQphase_Filtered, ...
handles.rdbtn_IQphase_Noise, handles.rdbtn_IQphase_NoiseFade], ...
'value', 0)
set(handles.btn_Apply, 'enable', 'off');
set(handles.txt_Status, 'string', 'Status: Completed.');
set(handles.output, 'Pointer', 'arrow');
% --- Executes on button press in btn_About.
function btn_About_Callback(hObject, eventdata, handles)
About;
% --- Executes on button press in btn_Help.
function btn_Help_Callback(hObject, eventdata, handles)
% --- Executes on button press in btn_Exit.
function btn_Exit_Callback(hObject, eventdata, handles)
btnPress = questdlg('Really to QUIT the simulation system?', ...
'QUIT', 'OK', 'Cancel', 'Cancel');
if strcmp(btnPress, 'OK')
close;
end
% --- Executes on button press in btn_Constellation.
function btn_Constellation_Callback(hObject, eventdata, handles)
% hObject handle to btn_Constellation (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h1 = scatterplot(handles.data.y,handles.param.mod.nSamp,0,'mx');
title('Modulation Signal(Baseband)');
set(h1,'position',[400,300,300,250]);
set(h1, 'NumberTitle', 'off');
set(h1, 'Name', 'Modulation Signal(Befor filter)');
set(h1, 'MenuBar', 'none');
set(h1, 'color', 'white')
% --- Executes on button press in btn_Filtered.
function btn_Filtered_Callback(hObject, eventdata, handles)
% hObject handle to btn_Filtered (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h2 = scatterplot(handles.data.yTx, ...
handles.param.rrc.OverSamp*handles.param.mod.nSamp, 0, 'mx');
title('Modulation Signal--After filter');
set(h2,'position',[400,300,300,250]);
set(h2, 'NumberTitle', 'off');
set(h2, 'Name', 'Modulation Signal(After filter)');
set(h2, 'MenuBar', 'none');
set(h2, 'color', 'white')
% --- Executes on button press in btn_Noise.
function btn_Noise_Callback(hObject, eventdata, handles)
% hObject handle to btn_Noise (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h3 = scatterplot(handles.data.yNoise, ...
handles.param.mod.nSamp*handles.param.rrc.OverSamp,0,'mx');
title('After White Gauss Noise');
set(h3,'position',[400,300,300,250]);
set(h3, 'NumberTitle', 'off');
set(h3, 'Name', 'Signal After Noise');
set(h3, 'Menubar', 'none')
set(h3, 'color', 'white')
% --- Executes on button press in btn_NoiseFading.
function btn_NoiseFading_Callback(hObject, eventdata, handles)
% hObject handle to btn_NoiseFading (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h4 = scatterplot(handles.data.yFading, ...
handles.param.mod.nSamp*handles.param.rrc.OverSamp,0,'mx');
title('After Noise and Fading');
set(h4,'position',[400,300,300,250]);
set(h4, 'NumberTitle', 'off');
set(h4, 'Name', 'Signal After Noise');
set(h4, 'Menubar', 'none')
set(h4, 'color', 'white')
% ==================================================================
% collecting parameters
function param = GetParam(handles)
param.src.BitNum = str2num(get(handles.edt_Src_BitNum, 'string'));
param.src.InitSeed = str2num(get(handles.edt_Src_InitSeed, 'string'));
param.mod.Fd = str2num(get(handles.edt_Mod_Fd, 'string'));
%param.mod.FrqDev = str2num(get(handles.edt_Mod_FrqDev, 'string'));
param.mod.Index = str2num(get(handles.edt_Mod_Index, 'string'));
param.mod.nSamp = str2num(get(handles.edt_Mod_nSamp, 'string'));
param.rrc.Order = str2num(get(handles.edt_RRC_Order, 'string'));
param.rrc.OverSamp = str2num(get(handles.edt_RRC_OverSamp, 'string'));
param.rrc.RollOff = str2num(get(handles.edt_RRC_RollOff, 'string'));
param.rrc.Delay = param.rrc.Order/(2*param.rrc.OverSamp);
if get(handles.chkb_AWGN,'value')
param.awgn.EbNo = str2num(get(handles.edt_AWGN_EbNo, 'string'));
else
param.awgn.EbNo = [];
end
if get(handles.chkb_Fading, 'value')
param.fading.Td = 1/(4800*param.mod.nSamp*param.rrc.OverSamp);
param.fading.FrqShift = str2num(get(handles.edt_Fading_FrqShift, 'string'));
param.fading.DelayVec = str2num(get(handles.edt_Fading_DelayVec, 'string'));
param.fading.GainVec = str2num(get(handles.edt_Fading_GainVec, 'string'));
else
param.fading.Td = [];
param.fading.FrqShift = [];
param.fading.DelayVec = [];
param.fading.GainVec = [];
end
% ==================================================================
% Setting parameters
function SetParam(handles,param)
set(handles.edt_Src_BitNum, 'string', num2str(param.src.BitNum));
set(handles.edt_Src_InitSeed, 'string', num2str(param.src.InitSeed));
set(handles.edt_Mod_Fd, 'string', num2str(param.mod.Fd));
set(handles.edt_Mod_Index, 'string', num2str(param.mod.Index));
set(handles.edt_Mod_nSamp, 'string', num2str(param.mod.nSamp));
set(handles.edt_RRC_OverSamp, 'string', num2str(param.rrc.OverSamp));
set(handles.edt_RRC_RollOff, 'string', num2str(param.rrc.RollOff));
set(handles.edt_RRC_Order, 'string', num2str(param.rrc.Order));
if ~isempty(param.awgn.EbNo)
set(handles.chkb_AWGN, 'value', 1);
set(handles.edt_AWGN_EbNo, 'enable', 'on');
set(handles.edt_AWGN_EbNo, 'string', num2str(param.awgn.EbNo));
else
set(handles.chkb_AWGN, 'value', 0);
set(handles.edt_AWGN_EbNo, 'enable', 'off');
end
if ~isempty(param.fading.FrqShift)
set(handles.chkb_Fading, 'value', 1);
%set(handles.edt_Fading_Td, 'enable', 'on');
set(handles.edt_Fading_FrqShift, 'enable', 'on');
set(handles.edt_Fading_DelayVec, 'enable', 'on');
set(handles.edt_Fading_GainVec, 'enable', 'on');
%set(handles.edt_Fading_Td, 'string', num2str(param.fading.Td));
set(handles.edt_Fading_FrqShift, 'string', num2str(param.fading.FrqShift));
set(handles.edt_Fading_DelayVec, 'string', num2str(param.fading.DelayVec));
set(handles.edt_Fading_GainVec, 'string', num2str(param.fading.GainVec));
else
set(handles.chkb_Fading, 'value', 0);
%set(handles.edt_Fading_Td, 'enable', 'off');
set(handles.edt_Fading_FrqShift, 'enable', 'off');
set(handles.edt_Fading_DelayVec, 'enable', 'off');
set(handles.edt_Fading_GainVec, 'enable', 'off');
end
% --- Executes on button press in rdbtn_SourceSignal.
function rdbtn_SourceSignal_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Plotting Source Signal...')
pause(0.01)
set(handles.rdbtn_SourceSignal, 'value', 1)
set([handles.rdbtn_IQphase, handles.rdbtn_IQphase_Filtered, ...
handles.rdbtn_IQphase_Noise, handles.rdbtn_IQphase_NoiseFade], ...
'value', 0)
axes(handles.axes_Src);
stem(handles.data.x,'ro-');
axis([0 50 -4 4]);
set(handles.axes_Src,'XGrid','on');
set(handles.axes_Src,'YGrid','on');
set(handles.axes_Src,'XMinorTick','on');
set(handles.axes_Src,'YMinorTick','on');
title('Source Signal');xlabel('Number');ylabel('Amplitude');
set(handles.txt_Status, 'string', 'Status: Plotting Source Signal... Done!')
% --- Executes on button press in rdbtn_IQphase.
function rdbtn_IQphase_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Plotting I/Q Phase Baseband...')
pause(0.01)
set(handles.rdbtn_IQphase, 'value', 1)
set([handles.rdbtn_SourceSignal, handles.rdbtn_IQphase_Filtered, ...
handles.rdbtn_IQphase_Noise, handles.rdbtn_IQphase_NoiseFade], ...
'value', 0)
axes(handles.axes_Src);
plot(unwrap(angle(handles.data.y)),'g-');
%axis([0 50 -4 4]);
set(handles.axes_Src,'XGrid','on');
set(handles.axes_Src,'YGrid','on');
set(handles.axes_Src,'XMinorTick','on');
set(handles.axes_Src,'YMinorTick','on');
title('I/Q phase baseband');xlabel('Number');ylabel('phase (radian)');
set(handles.txt_Status, 'string', 'Status: Plotting I/Q Phase Baseband... Done!')
% --- Executes on button press in rdbtn_IQphase_Filtered.
function rdbtn_IQphase_Filtered_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Plotting I/Q Phase Baseband(After Filter)...')
pause(0.01)
set(handles.rdbtn_IQphase_Filtered, 'value', 1)
set([handles.rdbtn_SourceSignal, handles.rdbtn_IQphase, ...
handles.rdbtn_IQphase_Noise, handles.rdbtn_IQphase_NoiseFade], ...
'value', 0)
plot(unwrap(angle(handles.data.yTx)),'c-');
%axis([0 50 -4 4]);
set(handles.axes_Src,'XGrid','on');
set(handles.axes_Src,'YGrid','on');
set(handles.axes_Src,'XMinorTick','on');
set(handles.axes_Src,'YMinorTick','on');
title('I/Q phase baseband (Filtered)');
xlabel('Number');ylabel('phase (radian)');
set(handles.txt_Status, 'string', ...
'Status: Plotting I/Q Phase Baseband(After Filter)... Done!')
% --- Executes on button press in rdbtn_IQphase_Noise.
function rdbtn_IQphase_Noise_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Plotting I/Q Phase Baseband(After AWGN)...')
pause(0.01)
set(handles.rdbtn_IQphase_Noise, 'value', 1)
set([handles.rdbtn_SourceSignal, handles.rdbtn_IQphase_Filtered, ...
handles.rdbtn_IQphase, handles.rdbtn_IQphase_NoiseFade], ...
'value', 0)
plot(unwrap(angle(handles.data.yNoise)),'m-');
%axis([0 50 -4 4]);
set(handles.axes_Src,'XGrid','on');
set(handles.axes_Src,'YGrid','on');
set(handles.axes_Src,'XMinorTick','on');
set(handles.axes_Src,'YMinorTick','on');
title('I/Q phase baseband (after AWGN)');
xlabel('Number');ylabel('phase (radian)');
set(handles.txt_Status, 'string', ...
'Status: Plotting I/Q Phase Baseband(After AWGN)... Done!')
% --- Executes on button press in rdbtn_IQphase_NoiseFade.
function rdbtn_IQphase_NoiseFade_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Plotting I/Q Phase (After AWGN & Fading)...')
pause(0.01)
set(handles.rdbtn_IQphase_NoiseFade, 'value', 1)
set([handles.rdbtn_SourceSignal, handles.rdbtn_IQphase_Filtered, ...
handles.rdbtn_IQphase_Noise, handles.rdbtn_IQphase], ...
'value', 0)
plot(unwrap(angle(handles.data.yFading)),'b-');
%axis([0 50 -4 4]);
set(handles.axes_Src,'XGrid','on');
set(handles.axes_Src,'YGrid','on');
set(handles.axes_Src,'XMinorTick','on');
set(handles.axes_Src,'YMinorTick','on');
title('I/Q phase baseband (Noise&Fade)');
xlabel('Number');ylabel('phase (radian)');
set(handles.txt_Status, 'string', ...
'Status: Plotting I/Q Phase (After AWGN & Fading)... Done!')
% =========================================================================
function slider1_Callback(hObject, eventdata, handles)
function slider1_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -