📄 dsimsoft_export.m
字号:
%axis([0, max(t), -0.6 0.6])
maxLen = length(t);
case 10,
t = [0:length(data.yNoise)-1]'/(mod.Fd*mod.nSamp*rrc.OverSamp);
plot(t, unwrap(angle(data.yNoise)), 'g-');
strTitle = handles.AxesTitle_Plot_IQTxPhaseNoise;
strxLabel = 'Time (s)';
stryLabel = 'Phase (radian)';
%axis square;
maxLen = length(data.yNoise);
case 11,
t = [0:length(data.yFading)-1]'/(mod.Fd*mod.nSamp*rrc.OverSamp);
plot(t, real(data.yFading), 'b-');
strTitle = handles.AxesTitle_Plot_ITxSigFade;
strxLabel = 'Time (s)';
stryLabel = 'Amplitude';
%axis([0, max(t), -0.6 0.6])
maxLen = length(t);
case 12,
t = [0:length(data.yFading)-1]'/(mod.Fd*mod.nSamp*rrc.OverSamp);
plot(t, imag(data.yFading), 'r-');
strTitle = handles.AxesTitle_Plot_QTxSigFade;
strxLabel = 'Time (s)';
stryLabel = 'Amplitude';
%axis([0, max(t), -0.6 0.6])
maxLen = length(t);
case 13,
t = [0:length(data.yFading)-1]'/(mod.Fd*mod.nSamp*rrc.OverSamp);
plot(t, unwrap(angle(data.yFading)), 'y-');
strTitle = handles.AxesTitle_Plot_IQTxPhaseFade;
strxLabel = 'In-Phase Signal';
stryLabel = 'Quadrature-Phase Signal';
%axis square;
maxLen = length(data.yFading);
case 14,
t = [0:length(data.yDown)-1]'/(mod.Fd*mod.nSamp);
plot(t, real(data.yDown), 'b-');
strTitle = handles.AxesTitle_Plot_IRxSigFilter;
strxLabel = 'Time (s)';
stryLabel = 'Amplitude';
%axis([0, max(t), -1.5 1.5])
maxLen = length(t);
case 15,
t = [0:length(data.yDown)-1]'/(mod.Fd*mod.nSamp);
plot(t, imag(data.yDown), 'r-');
strTitle = handles.AxesTitle_Plot_QRxSigFilter;
strxLabel = 'Time (s)';
stryLabel = 'Amplitude';
%axis([0, max(t), -1.5 1.5])
maxLen = length(t);
case 16,
t = [0:length(data.yDown)-1]'/(mod.Fd*mod.nSamp);
plot(t, unwrap(angle(data.yDown)), 'c-');
strTitle = handles.AxesTitle_Plot_IQRxPhaseFilter;
strxLabel = 'In-Phase Signal';
stryLabel = 'Quadrature-Phase Signal';
%axis square;
maxLen = length(data.yDown);
case 17,
t = [0:length(data.z)-1]'/mod.Fd;
stem(t, data.z, 'r.');
strTitle = handles.AxesTitle_Plot_DemodSig;
strxLabel = 'Time (s)';
stryLabel = 'Amplitude';
axis([0 max(t) -6 6]);
maxLen = length(t);
otherwise
return
end
SetSlider(handles, maxLen);
SetAxes(handles, strTitle, strxLabel, stryLabel);
set(handles.output, 'Pointer', 'arrow');
% ==================================================================
% --- Executes on button press in btn_Plot3.
% ------------------------------------------------------------------
function btn_Plot3_Callback(hObject, eventdata, handles)
set(handles.output, 'Pointer', 'watch');
%data = handles.data;
mod = getappdata(handles.output, 'mod');
rrc = getappdata(handles.output, 'rrc');
val = get(handles.list_Variable, 'value');
if (get(handles.radiobtn_Sim, 'value') && ...
~get(handles.chkb_Sim_Tx, 'value') && ...
get(handles.chkb_Sim_Rx, 'value')) || ...
(get(handles.radiobtn_Test, 'value') && ...
get(handles.chkb_Test_Rx, 'value'))
val = val + 10;
end
axes(handles.axes_main);
switch val
case 4,
t = [0:length(handles.data.y)-1]'/(mod.Fd*mod.nSamp);
plot3(real(handles.data.y), imag(handles.data.y), t, 'g-');
strTitle = handles.AxesTitle_Plot3_IQTxPhaseMod;
strxLabel = 'Real part';
stryLabel = 'Image part';
strzLabel = 'Time (s)';
case 7,
t = [0:length(handles.data.yTx)-1]'/(mod.Fd*mod.nSamp*rrc.OverSamp);
plot3(real(handles.data.yTx), imag(handles.data.yTx), t, 'm-');
strTitle = handles.AxesTitle_Plot3_IQTxPhaseFilter;
case 10,
t = [0:length(handles.data.yNoise)-1]'/...
(mod.Fd*mod.nSamp*rrc.OverSamp);
plot3(real(handles.data.yNoise), imag(handles.data.yNoise), t, 'c-');
strTitle = handles.AxesTitle_Plot3_IQTxPhaseNoise;
case 13,
t = [0:length(handles.data.yFading)-1]'/...
(mod.Fd*mod.nSamp*rrc.OverSamp);
plot3(real(handles.data.yFading), imag(handles.data.yFading), t, 'y-');
strTitle = handles.AxesTitle_Plot3_IQTxPhaseFade;
case 16,
t = [0:length(handles.data.yDown)-1]'/(mod.Fd*mod.nSamp);
plot3(real(handles.data.yDown), imag(handles.data.yDown), t, 'g-');
strTitle = handles.AxesTitle_Plot3_IQRxPhaseFilter;
otherwise
end
strxLabel = 'Real part';
stryLabel = 'Image part';
strzLabel = 'Time (s)';
SetAxes(handles, strTitle, strxLabel, stryLabel, strzLabel);
SetSlider(handles, length(t));
set(handles.output, 'pointer', 'arrow');
% =====================================================================
% --- Executes on button press in btn_Polar.
% ---------------------------------------------------------------------
function btn_Polar_Callback(hObject, eventdata, handles)
set(handles.output, 'Pointer', 'watch');
mod = getappdata(handles.output, 'mod');
rrc = getappdata(handles.output, 'rrc');
val = get(handles.list_Variable, 'value');
if (get(handles.radiobtn_Sim, 'value') && ...
~get(handles.chkb_Sim_Tx, 'value') && ...
get(handles.chkb_Sim_Rx, 'value')) || ...
(get(handles.radiobtn_Test, 'value') && ...
get(handles.chkb_Test_Rx, 'value'))
val = val + 10;
end
axes(handles.axes_main);
switch val
case 4,
polar(unwrap(angle(handles.data.y)), ...
abs(handles.data.y), 'g-');
strTitle = handles.AxesTitle_Polar_IQTxPhaseMod;
maxLen = length(handles.data.y);
case 7,
polar(unwrap(angle(handles.data.yTx)), ...
abs(handles.data.yTx), 'm-');
strTitle = handles.AxesTitle_Polar_IQTxPhaseFilter;
maxLen = length(handles.data.yTx);
case 10,
polar(unwrap(angle(handles.data.yNoise)), ...
abs(handles.data.yNoise), 'c-');
strTitle = handles.AxesTitle_Polar_IQTxPhaseNoise;
maxLen = length(handles.data.yNoise);
case 13,
polar(unwrap(angle(handles.data.yFading)), ...
abs(handles.data.yFading), 'y-');
strTitle = handles.AxesTitle_Polar_IQTxPhaseFade;
maxLen = length(handles.data.yFading);
case 16,
polar(unwrap(angle(handles.data.yDown)), ...
abs(handles.data.yDown), 'g-');
strTitle = handles.AxesTitle_Polar_IQRxPhaseFilter;
maxLen = length(handles.data.yDown);
otherwise
end
strxLabel = 'Angle (radian)';
stryLabel = 'Radius';
SetAxes(handles, strTitle, strxLabel, stryLabel);
SetSlider(handles, maxLen);
set(handles.output, 'pointer', 'arrow');
% --- Executes on button press in btn_ScatterPlot.
function btn_ScatterPlot_Callback(hObject, eventdata, handles)
index = get(handles.popup_Scatter, 'value');
str = get(handles.popup_Scatter, 'string');
mod = getappdata(handles.output, 'mod');
rrc = getappdata(handles.output, 'rrc');
switch str{index}
case 'Modulated SIG (Tx)',
data = handles.data.y;
N = mod.nSamp;
strTitle = 'Scatter Plot: Modulated SIG (Tx)';
case 'After RRC Filter (Tx)',
data = handles.data.yTx;
N = mod.nSamp*rrc.OverSamp;
strTitle = 'Scatter Plot: After RRC Filter (Tx)';
case 'Gauss White Noise (Tx)',
data = handles.data.yNoise;
N = mod.nSamp*rrc.OverSamp;
strTitle = 'Scatter Plot: Gauss White Noise (Tx)';
case 'After Rayleigh Fading (Tx)',
data = handles.data.yFading;
N = mod.nSamp*rrc.OverSamp;
strTitle = 'Scatter Plot: After Rayleigh Fading (Tx)';
case 'Received filter (Rx)',
data = handles.data.yDown;
N = mod.nSamp;
strTitle = 'Scatter Plot: Received filter (Rx)';
otherwise
return
end
if get(handles.chkb_NewFigure, 'value')
h = [];
else
h = getappdata(handles.output, 'hSctt');
if ~ishandle(h)
h = [];
end
end
hSctt = scatterplot(data, N, 0, 'g.', h);
ss = get(0, 'ScreenSize');
set(hSctt, 'Name', strTitle, 'NumberTitle', 'off', ...
'position', [1/3*ss(3), 1/3*ss(4), 1/3*ss(3), 2/5*ss(4)], ...
'color', 'white');
title(strTitle);
setappdata(handles.output, 'hSctt', hSctt);
% --- Executes during object creation, after setting all properties.
function edt_Process_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), ...
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in popup_Scatter.
function popup_Scatter_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.
function popup_Scatter_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), ...
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% =================================================================
% sub function SetAxes
% -----------------------------------------------------------------
function SetAxes(handles, strtitle, strxlabel, strylabel, strzlabel)
if nargin<5
strzlabel = [];
end
set(handles.axes_main, 'XGrid', 'on');
set(handles.axes_main, 'YGrid', 'on');
set(handles.axes_main, 'XMinorTick', 'on');
set(handles.axes_main, 'YMinorTick', 'on');
title(strtitle);
xlabel(strxlabel);
ylabel(strylabel);
if ~isempty(strzlabel)
set(handles.axes_main, 'ZGrid', 'on');
set(handles.axes_main, 'ZMinorTick', 'on');
zlabel(strzlabel);
end
% ================================================================
function SetSlider(handles,maxLen)
set([handles.slider_AxesAdjust_From, ...
handles.slider_AxesAdjust_To], 'max', maxLen);
set([handles.slider_AxesAdjust_From, ...
handles.slider_AxesAdjust_To], 'min', 0);
set(handles.slider_AxesAdjust_From, 'value', 1);
set(handles.slider_AxesAdjust_To, 'value', maxLen);
set(handles.txt_AxisFrom, 'string', num2str(1));
set(handles.txt_AxisTo, 'string', num2str(maxLen));
set([handles.slider_AxesAdjust_From, handles.slider_AxesAdjust_To], ...
'SliderStep', [8/maxLen,80/maxLen])
% =================================================================
% --- Sub Function, Adjust axis
% =================================================================
function AdjustAxis(handles, FromVal, ToVal)
mod = getappdata(handles.output, 'mod');
rrc = getappdata(handles.output, 'rrc');
strTitle = get(get(handles.axes_main, 'Title'), 'string');
axes(handles.axes_main);
switch strTitle
case {handles.AxesTitle_Plot_ITxSigFilter, ...
handles.AxesTitle_Plot_QTxSigFilter, ...
handles.AxesTitle_Plot_ITxSigNoise, ...
handles.AxesTitle_Plot_QTxSigNoise, ...
handles.AxesTitle_Plot_ITxSigFade, ...
handles.AxesTitle_Plot_QTxSigFade, ...
handles.AxesTitle_Plot_IQTxPhaseFilter, ...
handles.AxesTitle_Plot_IQTxPhaseNoise, ...
handles.AxesTitle_Plot_IQTxPhaseFade}
Ts = 1/(mod.Fd*mod.nSamp*rrc.OverSamp);
case {handles.AxesTitle_Plot_ITxSigMod, ...
handles.AxesTitle_Plot_QTxSigMod, ...
handles.AxesTitle_Plot_IRxSigFilter, ...
handles.AxesTitle_Plot_QRxSigFilter, ...
handles.AxesTitle_Plot_IQTxPhaseMod, ...
handles.AxesTitle_Plot_IQRxPhaseFilter}
Ts = 1/(mod.Fd*mod.nSamp);
case {handles.AxesTitle_Plot_SourceSig, ...
handles.AxesTitle_Plot_DemodSig}
Ts = 1/mod.Fd;
%case {handles.AxesTitle_Plot_IQTxPhaseMod, ...
% handles.AxesTitle_Plot_IQTxPhaseFilter, ...
% handles.AxesTitle_Plot_IQTxPhaseNoise, ...
% handles.AxesTitle_Plot_IQTxPhaseFade, ...
% handles.AxesTitle_Plot_IQRxPhaseFilter},
% if strcmp(strTitle, handles.AxesTitle_Plot_IQTxPhaseMod)
% data = handles.data.y;
% color = 'c-';
% end
% if strcmp(strTitle, handles.AxesTitle_Plot_IQTxPhaseFilter),
% data = handles.data.yTx;
% color = 'm-';
% end
% if strcmp(strTitle, handles.AxesTitle_Plot_IQTxPhaseNoise),
% data = handles.data.yNoise;
% color = 'g-';
% end
% if strcmp(strTitle, handles.AxesTitle_Plot_IQTxPhaseFade),
% data = handles.data.yFading;
% color = 'y-';
% end
% if strcmp(strTitle, handles.AxesTitle_Plot_IQRxPhaseFilter),
% data = handles.data.yDown;
% color = 'c-';
% end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -