?? receivertest_export.m
字號:
set(handles.txt_Status, 'string', 'Status: Collecting and Checking Parameters... Done');
pause(0.01);
% -------------------------------------------------------------------
% Generate source signal
set(handles.txt_Status, 'string', 'Status: Generating Source Signal...');
pause(0.01);
Data.x = randsrc(param.src.BitNum/2,1,[0:3],param.src.InitSeed);
%assignin('base', 'x',Data.x);
Data.x = 2*(Data.x+1)-5;
set(handles.txt_Status, 'string', 'Status: Generating Source Signal... Done');
pause(0.01)
% modulation using CP4FSK method
set(handles.txt_Status, 'string', 'Status: Modulating signal using CP4FSK...');
pause(0.01);
Data.y = cpfskmod_new(Data.x,4,param.mod.Index,param.mod.nSamp,param.mod.Fd);
set(handles.txt_Status, 'string', 'Status: Modulating signal using CP4FSK... Done');
pause(0.01);
set(handles.txt_Status, 'string', 'Status: Filtering data using RRC filter...');
pause(0.01);
% filter designed
rrcfltcoef = rcosine(param.mod.Fd*param.mod.nSamp, ...
param.mod.Fd*param.mod.nSamp*param.rrc.OverSamp, 'fir/sqrt', ...
0.2, param.rrc.Delay);
% up sample the signal
yUp = upsample(Data.y, param.rrc.OverSamp);
% conpensated
yUp = [yUp;zeros(param.rrc.Order,1)];
% filter
Data.yTx = filter(rrcfltcoef,1,yUp);
set(handles.txt_Status, 'string', 'Status: Filtering data using RRC filter... Done');
pause(0.01);
% adding noise
set(handles.txt_Status, 'string', 'Status: Adding noise and fading...');
pause(0.01);
if get(handles.chkb_AWGN, 'value')
Data.yNoise = awgn(Data.yTx,param.awgn.EbNo,'measured',12345,'db');
else
Data.yNoise = Data.yTx;
end
if get(handles.chkb_Fading, 'value')
chan = rayleighchan(param.fading.Td, param.fading.FrqShift, ...
param.fading.DelayVec, param.fading.GainVec);
Data.yFading = filter(chan, Data.yNoise);
else
Data.yFading = Data.yNoise;
end
set(handles.txt_Status, 'string', 'Status: Ading noise and fading... Done');
pause(0.01);
%assignin('base', 'yFading', Data.yFading);
%set(handles.txt_Status, 'string', 'Status: Filtering received data...');
%pause(0.01);
% received filter
%yRx = filter(rrcfltcoef, 1, Data.yFading);
% down sample
%yDown = downsample(yRx,param.rrc.OverSamp);
% conpensated
%Data.yDown = yDown(param.rrc.Order/param.rrc.OverSamp+1:end);
%set(handles.txt_Status, 'string', 'Status: Filtering received data... Done');
%pause(0.01);
% demodulation, using cp4fsk demod function
%set(handles.txt_Status, 'string', 'Status: Demodulation... ');
%pause(0.01);
%Data.z = cpfskdemod_new(Data.yDown,4,param.mod.Index,param.mod.nSamp,param.mod.Fd);
%set(handles.txt_Status, 'string', 'Status: Demodulation... Done');
%pause(0.01);
%assignin('base', 'z',Data.z);
% Starting plot.
set(handles.txt_Status, 'string', 'Status: Starting plot... ');
pause(0.01)
axes(handles.axes_Src);
stem(Data.x,'ro-');
axis([0 100 -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');
axes(handles.axes_RRC);
plot(rrcfltcoef,'r.');
set(handles.axes_RRC, 'xLim', [0 param.rrc.Order]);
set(handles.axes_RRC, 'XGrid','on');
set(handles.axes_RRC, 'YGrid','on');
set(handles.axes_RRC,'XMinorTick','on');
set(handles.axes_RRC,'YMinorTick','on');
title('Square Root Raised Cosine Filter-Impluse Response');
xlabel('Sample');ylabel('Amplitude');
set(handles.txt_Status, 'string', 'Status: Starting plot... Done');
pause(0.01)
handles.param = param;
handles.data = Data;
guidata(handles.output,handles);
set(handles.btn_Constellation, 'enable', 'on');
set(handles.btn_Filtered, 'enable', 'on');
set(handles.btn_Noise, 'enable', 'on');
set(handles.btn_NoiseFading, 'enable', 'on');
set(handles.btn_SaveData, 'enable', 'on');
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)
close;
% --- 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
% --- Creates and returns a handle to the GUI figure.
function h1 = ReceiverTest_export_LayoutFcn(policy)
% policy - create a new figure or use a singleton. 'new' or 'reuse'.
persistent hsingleton;
if strcmpi(policy, 'reuse') & ishandle(hsingleton)
h1 = hsingleton;
return;
end
appdata = [];
appdata.GUIDEOptions = struct(...
'active_h', [], ...
'taginfo', struct(...
'figure', 2, ...
'axes', 7, ...
'pushbutton', 16, ...
'text', 26, ...
'uipanel', 11, ...
'edit', 18, ...
'radiobutton', 9, ...
'popupmenu', 3, ...
'checkbox', 3, ...
'frame', 5), ...
'override', 0, ...
'release', 13, ...
'resize', 'none', ...
'accessibility', 'callback', ...
'mfile', 1, ...
'callbacks', 1, ...
'singleton', 1, ...
'syscolorfig', 1, ...
'blocking', 0, ...
'lastSavedFile', 'E:\MATLAB701\work\DviewSoft\ReceiverTest_export.m');
appdata.lastValidTag = 'ReceiverTest';
appdata.GUIDELayoutEditor = [];
h1 = figure(...
'Units','characters',...
'PaperUnits',get(0,'defaultfigurePaperUnits'),...
'Color',[0.925490196078431 0.913725490196078 0.847058823529412],...
'Colormap',[0 0 0.5625;0 0 0.625;0 0 0.6875;0 0 0.75;0 0 0.8125;0 0 0.875;0 0 0.9375;0 0 1;0 0.0625 1;0 0.125 1;0 0.1875 1;0 0.25 1;0 0.3125 1;0 0.375 1;0 0.4375 1;0 0.5 1;0 0.5625 1;0 0.625 1;0 0.6875 1;0 0.75 1;0 0.8125 1;0 0.875 1;0 0.9375 1;0 1 1;0.0625 1 1;0.125 1 0.9375;0.1875 1 0.875;0.25 1 0.8125;0.3125 1 0.75;0.375 1 0.6875;0.4375 1 0.625;0.5 1 0.5625;0.5625 1 0.5;0.625 1 0.4375;0.6875 1 0.375;0.75 1 0.3125;0.8125 1 0.25;0.875 1 0.1875;0.9375 1 0.125;1 1 0.0625;1 1 0;1 0.9375 0;1 0.875 0;1 0.8125 0;1 0.75 0;1 0.6875 0;1 0.625 0;1 0.5625 0;1 0.5 0;1 0.4375 0;1 0.375 0;1 0.3125 0;1 0.25 0;1 0.1875 0;1 0.125 0;1 0.0625 0;1 0 0;0.9375 0 0;0.875 0 0;0.8125 0 0;0.75 0 0;0.6875 0 0;0.625 0 0;0.5625 0 0],...
'IntegerHandle','off',...
'InvertHardcopy',get(0,'defaultfigureInvertHardcopy'),...
'Name','ReceiverTest',...
'NumberTitle','off',...
'PaperPosition',get(0,'defaultfigurePaperPosition'),...
'PaperSize',[20.98404194812 29.67743169791],...
'PaperType',get(0,'defaultfigurePaperType'),...
'Position',[50 12.7692307692308 113.4 43],...
'Resize','off',...
'ToolBar','none',...
'HandleVisibility','callback',...
'Tag','ReceiverTest',...
'UserData',[],...
'Behavior',get(0,'defaultfigureBehavior'),...
'Visible','on',...
'CreateFcn', {@local_CreateFcn, '', appdata} );
appdata = [];
appdata.lastValidTag = 'axes_Src';
h2 = axes(...
'Parent',h1,...
'Units','characters',...
'Position',[10.6 27 63 9],...
'Box','on',...
'CameraPosition',[0.5 0.5 9.16025403784439],...
'CameraPositionMode',get(0,'defaultaxesCameraPositionMode'),...
'Color',get(0,'defaultaxesColor'),...
'ColorOrder',get(0,'defaultaxesColorOrder'),...
'LooseInset',[14.898 4.91615384615385 10.887 3.35192307692308],...
'XColor',get(0,'defaultaxesXColor'),...
'XGrid','on',...
'XMinorTick','on',...
'YColor',get(0,'defaultaxesYColor'),...
'YGrid','on',...
'YMinorTick','on',...
'ZColor',get(0,'defaultaxesZColor'),...
'Tag','axes_Src',...
'Behavior',get(0,'defaultaxesBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );
h3 = get(h2,'title');
set(h3,...
'Parent',h2,...
'Units','data',...
'FontUnits','points',...
'BackgroundColor','none',...
'Color',[0 0 0],...
'EdgeColor','none',...
'EraseMode','normal',...
'DVIMode','auto',...
'FontAngle','normal',...
'FontName','Helvetica',...
'FontSize',10,...
'FontWeight','normal',...
'HorizontalAlignment','center',...
'LineStyle','-',...
'LineWidth',0.5,...
'Margin',2,...
'Position',[0.5 1.05555555555556 1.00005459937205],...
'Rotation',0,...
'String','',...
'Interpreter','tex',...
'VerticalAlignment','bottom',...
'ButtonDownFcn',[],...
'CreateFcn', {@local_CreateFcn, [], ''} ,...
'DeleteFcn',[],...
'BusyAction','queue',...
'HandleVisibility','off',...
'HelpTopicKey','',...
'HitTest','on',...
'Interruptible','on',...
'SelectionHighlight','on',...
'Serializable','on',...
'Tag','',...
'UserData',[],...
'Behavior',struct(),...
'Visible','on',...
'XLimInclude','on',...
'YLimInclude','on',...
'ZLimInclude','on',...
'CLimInclude','on',...
'ALimInclude','on',...
'Clipping','off');
h4 = get(h2,'xlabel');
set(h4,...
'Parent',h2,...
'Units','data',...
'FontUnits','points',...
'BackgroundColor','none',...
'Color',[0 0 0],...
'EdgeColor','none',...
'EraseMode','normal',...
'DVIMode','auto',...
'FontAngle','normal',...
'FontName','Helvetica',...
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -