Skip to content
Snippets Groups Projects
Commit c5070ff6 authored by leprob001's avatar leprob001
Browse files

Added support for saving RFC file from the main menu.

parent 6d41a632
No related branches found
No related tags found
No related merge requests found
121 122
\ No newline at end of file \ No newline at end of file
function [] = saveRfc(~, ~)
%SAVERFC Summary of this function goes here
% Detailed explanation goes here
global artoaWorkspace artoaDataInput;
%% Get selected trajectory
trajectoryIndex = artoaWorkspace.trajectoryOutput.tableGeneratedTracksSelectedRow;
trajectory = artoaWorkspace.trajectoryOutput.trajectories{trajectoryIndex};
%% Prepare data
lineCount = length(trajectory.latitude);
data = [];
data(:, 1) = repmat(999, lineCount, 1);
data(:, 2) = 1:lineCount;
data(:, 3) = trajectory.date;
data(:, 4) = trajectory.temperature;
data(:, 5) = trajectory.pressure;
data(:, 6) = trajectory.latitude;
data(:, 7) = trajectory.longitude;
data(:, 8) = trajectory.velocities.horizontalLongitude * 100;
data(:, 9) = trajectory.velocities.horizontalLatitude * 100;
data(:, 10) = NaN(size(trajectory.date));
[~, indicesDates, indices] = intersect(trajectory.date, trajectory.velocities.verticalDates);
data(indicesDates, 10) = trajectory.velocities.vertical(indices) * 1000;
%% Get required variables
folder = artoa.data.getMember(artoaDataInput, {'ini', 'directory', 'rfc'}, pwd());
filter = artoa.data.getMember(artoaDataInput, {'ini', 'filemask', 'rfc'}, '*.rfc');
%% Ask for filename
[filename, pathname] = uiputfile(fullfile(folder, filter));
filepath = fullfile(pathname, filename);
artoa.save.rfc(filepath, artoaWorkspace.float, data, trajectory);
end
...@@ -19,7 +19,7 @@ callbacks.WindowButtonDownFcn = @artoa.controller.main.windowButtonDownFcn; ...@@ -19,7 +19,7 @@ callbacks.WindowButtonDownFcn = @artoa.controller.main.windowButtonDownFcn;
callbacks.loadRfb = @artoa.controller.file.loadRfb; callbacks.loadRfb = @artoa.controller.file.loadRfb;
callbacks.loadInterim = @artoa.controller.file.loadInterim; callbacks.loadInterim = @artoa.controller.file.loadInterim;
callbacks.loadSoundsourceFile = @artoa.controller.file.loadSoundSourceFile; callbacks.loadSoundsourceFile = @artoa.controller.file.loadSoundSourceFile;
callbacks.saveRic = @artoa.controller.saveRic; callbacks.saveRfc = @artoa.controller.file.saveRfc;
callbacks.saveInterim = @artoa.controller.file.saveInterim; callbacks.saveInterim = @artoa.controller.file.saveInterim;
callbacks.loadArtoaIni = @artoa.controller.file.loadArtoaIni; callbacks.loadArtoaIni = @artoa.controller.file.loadArtoaIni;
callbacks.openEditTemperature = @artoa.controller.edit.temperature.open; callbacks.openEditTemperature = @artoa.controller.edit.temperature.open;
......
...@@ -11,7 +11,7 @@ availableCallbacks = { ... ...@@ -11,7 +11,7 @@ availableCallbacks = { ...
'loadRfb', ... 'loadRfb', ...
'loadInterim', ... 'loadInterim', ...
'loadSoundsourceFile', ... 'loadSoundsourceFile', ...
'saveRic', ... 'saveRfc', ...
'saveInterim', ... 'saveInterim', ...
'loadArtoaIni', ... 'loadArtoaIni', ...
'quit', ... 'quit', ...
...@@ -80,9 +80,8 @@ artoaGui.main.menus.fileSave = uimenu( ... ...@@ -80,9 +80,8 @@ artoaGui.main.menus.fileSave = uimenu( ...
uimenu( ... uimenu( ...
artoaGui.main.menus.fileSave, ... artoaGui.main.menus.fileSave, ...
'Label', 'RIC file', ... 'Label', 'RFC file', ...
'Callback', pCallbacks.saveRic, ... 'Callback', pCallbacks.saveRfc ...
'Enable', 'off' ...
); );
uimenu( ... uimenu( ...
......
...@@ -47,16 +47,16 @@ else ...@@ -47,16 +47,16 @@ else
end end
%% Replace all NaN with default values %% Replace all NaN with default values
defaultValues = repmat(-999, 10); % defaultValues = repmat(-999, 10);
defaultValues(4) = -9.99; % temperature default value % defaultValues(4) = -9.99; % temperature default value
% start at index 4 because the first three do not have default values % % start at index 4 because the first three do not have default values
for i = 4:size(pData, 2) % for i = 4:size(pData, 2)
nanIndex = find(isnan(pData(:, i))); % nanIndex = find(isnan(pData(:, i)));
if ~isempty(nanIndex) % if ~isempty(nanIndex)
pData(nanIndex, i) = repmat(defaultValues(i), 1, size(pData, 1)); % pData(nanIndex, i) = repmat(defaultValues(i), 1, size(pData, 1));
end % end
clear nanIndex; % clear nanIndex;
end % end
%% Prepare header and add it to the file string %% Prepare header and add it to the file string
...@@ -142,17 +142,17 @@ elseif (~isstruct(pTrajectory)) ...@@ -142,17 +142,17 @@ elseif (~isstruct(pTrajectory))
end end
%% TRAJECTORY IS AVAILABLE %% TRAJECTORY IS AVAILABLE
if (pTrajectory.dopplerCorrection == 1) if (pTrajectory.trackParameter.dopplerCorrection == 1)
dopplerCorrectionUsed = 'yes'; dopplerCorrectionUsed = 'yes';
else else
dopplerCorrectionUsed = 'no'; dopplerCorrectionUsed = 'no';
end end
trajectoryHeader = { ... trajectoryHeader = { ...
['** Tracking method: ' char(pTrajectory.trackingMethod)], ... ['** Tracking method: ' pTrajectory.trackParameter.trackingMethodString], ...
['** Interpolation method: ' char(pTrajectory.interpolationMethod)], ... ['** Interpolation method: ' pTrajectory.trackParameter.interpolationMethodString], ...
['** Interpolation step size: ' num2str(pTrajectory.interval) ' hours'], ... ['** Interpolation step size: ' num2str(pTrajectory.trackParameter.interpolationInterval) ' hours'], ...
['** Interpolation gap size: ' num2str(pTrajectory.gapSize)], ... ['** Interpolation gap size: ' num2str(pTrajectory.trackParameter.gapSize)], ...
['** Doppler correction: ' dopplerCorrectionUsed], ... ['** Doppler correction: ' dopplerCorrectionUsed], ...
['** -------'], ... ['** -------'], ...
['** Sound source combinations: (rafos day, sound sources, reference position, sound speed)'] ... ['** Sound source combinations: (rafos day, sound sources, reference position, sound speed)'] ...
...@@ -161,14 +161,14 @@ trajectoryHeader = { ... ...@@ -161,14 +161,14 @@ trajectoryHeader = { ...
trajectoryHeader = strjoin(trajectoryHeader, newline); trajectoryHeader = strjoin(trajectoryHeader, newline);
soundSourcesHeader = ''; soundSourcesHeader = '';
for i = 1:length(pTrajectory.soundSources) for i = 1:size(pTrajectory.trackParameter.soundsourceCombinations, 1)
currentCombination = pTrajectory.soundSources(i); currentCombination = pTrajectory.trackParameter.soundsourceCombinations(i, :);
soundSourcesHeader = [ ... soundSourcesHeader = [ ...
soundSourcesHeader ... soundSourcesHeader ...
'** ' num2str(currentCombination.begin) ' to ' num2str(currentCombination.end) ': ' ... '** ' num2str(currentCombination.combinationBegin) ' to ' num2str(currentCombination.combinationEnd) ': ' ...
strjoin(currentCombination.sources, ' ') ' ' ... currentCombination.soundsources ' ' ...
num2str(currentCombination.referencePosition) ' ' ... currentCombination.referencePosition ' ' ...
num2str(currentCombination.soundSpeed) ... num2str(currentCombination.soundspeed1) ...
newline ... newline ...
]; ];
end end
...@@ -177,18 +177,18 @@ soundSourcesHeader = [ ... ...@@ -177,18 +177,18 @@ soundSourcesHeader = [ ...
soundSourcesHeader ... soundSourcesHeader ...
'** -------' newline ... '** -------' newline ...
'** Additional Float clock offsets, seconds (beginning, end): ' ... '** Additional Float clock offsets, seconds (beginning, end): ' ...
num2str(pTrajectory.additionalFloatOffsetBegin) ... num2str(pTrajectory.offsets{'Float', 'OffsetStart'}) ...
' ' ... ' ' ...
num2str(pTrajectory.additionalFloatOffsetEnd) newline ... num2str(pTrajectory.offsets{'Float', 'OffsetStart'}) newline ...
'** -------' newline ... '** -------' newline ...
' * l ----------' ... ' * l ----------' ...
]; ];
headerString = [ ... headerString = strjoin([ ...
headerString newline... headerString newline...
trajectoryHeader newline ... trajectoryHeader newline ...
soundSourcesHeader newline ... soundSourcesHeader newline ...
]; ], '');
%% Save to file %% Save to file
saveToFile(pFilename, headerString, dataString); saveToFile(pFilename, headerString, dataString);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment