📄 setsettings.m
字号:
% Exclude satellite from the list
settings.acqSatelliteList = ...
setdiff(settings.acqSatelliteList, PRN);
end
end
%--- Acquisition parameters -------------------------------------------
settings.acqSearchBand = edit2double(handles.editAcqSearchBand);
settings.acqThreshold = edit2double(handles.editAcqThreshold);
settings.skipAcquisition = getCheckbox(handles.checkboxSkipAcquisition);
%--- Tracking ---------------------------------------------------------
settings.dllCorrelatorSpacing = edit2double(handles.editDllCorrelatorSpacing);
settings.dllDampingRatio = edit2double(handles.editDllDampingRatio);
settings.dllNoiseBandwidth = edit2double(handles.editDllNoiseBandwidth);
settings.pllDampingRatio = edit2double(handles.editPllDampingRatio);
settings.pllNoiseBandwidth = edit2double(handles.editPllNoiseBandwidth);
%--- Nav solutions ----------------------------------------------------
settings.elevationMask = edit2double(handles.editElevationMask);
settings.navSolPeriod = edit2double(handles.editNavSolPeriod);
settings.useTropCorr = getCheckbox(handles.checkboxUseTropCorr);
settings.truePosition.E = edit2double(handles.editUtmE);
settings.truePosition.N = edit2double(handles.editUtmN);
settings.truePosition.U = edit2double(handles.editUtmU);
%--- Plotting ---------------------------------------------------------
settings.plotTracking = getCheckbox(handles.checkboxPlotTracking);
catch
%Please read the Matlab help for mo details on TRY, CATCH and ERROR
%commands.
%--- Read error information -------------------------------------------
e = lasterror;
%If this error caused by bad input
if strcmp(e.identifier, 'setSettings:badInput')
% then do not save settings, return an error indication
error = 1;
else
% Not our error, this error must be handled/reported in the system
rethrow(e);
end
end
%@@@ Function loads the settings into the GUI @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function loadSettings(handles)
%--- Signal properties related fields -------------------------------------
set(handles.editFileName, 'String', handles.settings.fileName);
set(handles.editNumberOfChannels, 'String', num2str(handles.settings.numberOfChannels));
set(handles.editSkipNumberOfBytes, 'String', num2str(handles.settings.skipNumberOfBytes));
set(handles.editMsToProcess, 'String', num2str(handles.settings.msToProcess));
set(handles.editIF, 'String', num2str(handles.settings.IF));
set(handles.editSamplingFreq, 'String', num2str(handles.settings.samplingFreq ));
set(handles.editDataType, 'String', handles.settings.dataType);
%--- Satellite PRN numbers ------------------------------------------------
for PRN = 1:32
% If the PRN number is in the list
if ismember(PRN, handles.settings.acqSatelliteList)
% then set the checkbox to "checked" state
setCheckbox(getfield(handles, ['checkboxPRN', num2str(PRN)]), 1);
else
% set the checkbox to "unchecked" state
setCheckbox(getfield(handles, ['checkboxPRN', num2str(PRN)]), 0);
end
end
%--- Acquisition parameters -------------------------------------------
set(handles.editAcqSearchBand, 'String', num2str(handles.settings.acqSearchBand));
set(handles.editAcqThreshold, 'String', num2str(handles.settings.acqThreshold));
setCheckbox(handles.checkboxSkipAcquisition, handles.settings.skipAcquisition);
%--- Tracking ---------------------------------------------------------
set(handles.editDllCorrelatorSpacing, 'String', num2str(handles.settings.dllCorrelatorSpacing));
set(handles.editDllDampingRatio, 'String', num2str(handles.settings.dllDampingRatio));
set(handles.editDllNoiseBandwidth, 'String', num2str(handles.settings.dllNoiseBandwidth));
set(handles.editPllDampingRatio, 'String', num2str(handles.settings.pllDampingRatio));
set(handles.editPllNoiseBandwidth, 'String', num2str(handles.settings.pllNoiseBandwidth));
%--- Nav solutions --------------------------------------------------------
set(handles.editElevationMask, 'String', num2str(handles.settings.elevationMask));
set(handles.editNavSolPeriod, 'String', num2str(handles.settings.navSolPeriod));
setCheckbox(handles.checkboxUseTropCorr, handles.settings.useTropCorr);
set(handles.editUtmE, 'String', num2str(handles.settings.truePosition.E));
set(handles.editUtmN, 'String', num2str(handles.settings.truePosition.N));
set(handles.editUtmU, 'String', num2str(handles.settings.truePosition.U));
%--- Plotting -------------------------------------------------------------
setCheckbox(handles.checkboxPlotTracking, handles.settings.plotTracking);
%@@@ Function reads current state of a checkbox "in the Matlab way" @@@@@@@
function value = getCheckbox(handle)
if (get(handle, 'Value') == get(handle,'Max'))
% then checkbox is checked
value = 1;
else
% checkbox is not checked
value = 0;
end
%@@@ Function sets checkbox state @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
% Setting the "Value" variable to some number not equal to "Min" or "Max"
% will cause Matlab runtime error.
function setCheckbox(handle, value)
if (value == 1)
% "check" the checkbox
set(handle, 'Value', get(handle,'Max'));
else
% "uncheck" the checkbox
set(handle, 'Value', get(handle,'Min'));
end
%@@@ Function checks if the edit field contains a numeric value. If yes,
%then it converts string type value to double. @@@@@@@@@@@@@@@@@@@@@@@@@@@@
function value = edit2double(handle)
%--- Try to convert string in the entry field to double -------------------
value = str2double(get(handle, 'String'));
% If it is not a number, then handle the incorect input -------------------
if isnan(value) && ~strcmpi(get(handle, 'String'), 'NaN')
%--- Make the message text ---
text = ['Bad input in the field "', get(handle, 'UserData'),...
'". You must enter a numeric value.'];
% Show the error message in a message box
errordlg(text, 'Bad Input', 'modal');
%--- Stop code execution here and "Throw an error". The error will be
% "cached" by the "CATCH" statement. The code execution resumes from
% at the "CATCH" statement. Please read the Matlab help for mo details
% on TRY, CATCH and ERROR commands.
error('setSettings:badInput', text);
end
% --- Executes on button press in pushbuttonSelectDataFile.
function pushbuttonSelectDataFile_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonSelectDataFile (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[fileName, pathName] = uigetfile('*.bin', ...
'Select data file...', ...
get(handles.editFileName, 'String'));
if (~isequal(fileName, 0) && ~isequal(pathName, 0))
set(handles.editFileName, 'String', fullfile(pathName, fileName));
set(handles.pushbuttonApply, 'Enable', 'on');
end
% --- Executes on button press in pushbuttonProbeData.
function pushbuttonProbeData_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonProbeData (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[settings, error] = saveSettings(handles);
%--- If no errors, then ...
if error == 0
try
probeData(settings);
catch
errStruct = lasterror;
msgbox(errStruct.message, 'Error', 'error');
end
end
% --- Executes on button press in pushbuttonDefault.
function pushbuttonDefault_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonDefault (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles.settings = initSettings();
% Assign it to the GUI data structure
loadSettings(handles);
% Update handles structure
guidata(hObject, handles);
% Turn on the apply button
set(handles.pushbuttonApply, 'Enable', 'on');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -