From 114c0226b68e6dcad83cde9875c87cfd0ab787e4 Mon Sep 17 00:00:00 2001 From: Lewin Probst <info@emirror.de> Date: Wed, 11 Dec 2019 15:48:33 +0100 Subject: [PATCH] Added option to save the optimum tables to a mat file. --- VERSION | 2 +- .../+edit/+offsets/buttonCalculateOffsets.m | 3 +- .../+controller/+file/saveOptimumTables.m | 33 +++++++++++++++++++ lib/+artoa/+controller/+main/open.m | 1 + lib/+artoa/+gui/main.m | 7 ++++ lib/+artoa/+offsets/solve.m | 6 ++-- 6 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 lib/+artoa/+controller/+file/saveOptimumTables.m diff --git a/VERSION b/VERSION index b9c6c00..dd1ec20 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -131 \ No newline at end of file +132 \ No newline at end of file diff --git a/lib/+artoa/+controller/+edit/+offsets/buttonCalculateOffsets.m b/lib/+artoa/+controller/+edit/+offsets/buttonCalculateOffsets.m index d541802..f6b0c67 100644 --- a/lib/+artoa/+controller/+edit/+offsets/buttonCalculateOffsets.m +++ b/lib/+artoa/+controller/+edit/+offsets/buttonCalculateOffsets.m @@ -14,7 +14,8 @@ satData = artoaWorkspace.satData; artoaWorkspace.editOffsets.A, ... artoaWorkspace.editOffsets.B, ... artoaWorkspace.editOffsets.X, ... - ~ ... + artoaWorkspace.editOffsets.unfilteredA, ... + artoaWorkspace.editOffsets.unfilteredB ... ] = artoa.offsets.solve( ... artoaDataInput.rfb, ... soundsources, ... diff --git a/lib/+artoa/+controller/+file/saveOptimumTables.m b/lib/+artoa/+controller/+file/saveOptimumTables.m new file mode 100644 index 0000000..2028b3a --- /dev/null +++ b/lib/+artoa/+controller/+file/saveOptimumTables.m @@ -0,0 +1,33 @@ +function [] = saveOptimumTables(~, ~) +%SAVERFC Summary of this function goes here +% Detailed explanation goes here + +global artoaWorkspace artoaDataInput; + +%% Get offsets +unfilteredA = artoa.data.getMember(artoaWorkspace, {'editOffsets', 'unfilteredA'}, false); +unfilteredB = artoa.data.getMember(artoaWorkspace, {'editOffsets', 'unfilteredB'}, false); +A = artoa.data.getMember(artoaWorkspace, {'editOffsets', 'A'}, false); +B = artoa.data.getMember(artoaWorkspace, {'editOffsets', 'B'}, false); +X = artoa.data.getMember(artoaWorkspace, {'editOffsets', 'X'}, false); + +if islogical(unfilteredA) || islogical(unfilteredB) ... + || islogical(A) || islogical(B) || islogical(X) + errordlg('At least one of the matrices to save is not available. Please recalculate!', 'Matrices not found'); + return; +end + +%% Get required variables +folder = artoa.data.getMember(artoaDataInput, {'ini', 'directory', 'optimumtables'}, pwd()); +filter = artoa.data.getMember(artoaDataInput, {'ini', 'filemask', 'optimumtables'}, '*.mat'); + +%% Ask for filename +[filename, pathname] = uiputfile(fullfile(folder, filter)); + +filepath = fullfile(pathname, filename); + +save(filepath, 'unfilteredA', 'unfilteredB', 'A', 'B', 'X'); + + +end + diff --git a/lib/+artoa/+controller/+main/open.m b/lib/+artoa/+controller/+main/open.m index 0784c9c..4d4e68d 100644 --- a/lib/+artoa/+controller/+main/open.m +++ b/lib/+artoa/+controller/+main/open.m @@ -21,6 +21,7 @@ callbacks.loadInterim = @artoa.controller.file.loadInterim; callbacks.loadSoundsourceFile = @artoa.controller.file.loadSoundSourceFile; callbacks.saveRfc = @artoa.controller.file.saveRfc; callbacks.saveInterim = @artoa.controller.file.saveInterim; +callbacks.saveOptimumTables = @artoa.controller.file.saveOptimumTables; callbacks.loadArtoaIni = @artoa.controller.file.loadArtoaIni; callbacks.openEditTemperature = @artoa.controller.edit.temperature.open; callbacks.openEditPressure = @artoa.controller.edit.pressure.open; diff --git a/lib/+artoa/+gui/main.m b/lib/+artoa/+gui/main.m index e6dd5dd..1ba00e0 100644 --- a/lib/+artoa/+gui/main.m +++ b/lib/+artoa/+gui/main.m @@ -13,6 +13,7 @@ availableCallbacks = { ... 'loadSoundsourceFile', ... 'saveRfc', ... 'saveInterim', ... + 'saveOptimumTables', ... 'loadArtoaIni', ... 'quit', ... 'openEditTemperature', ... @@ -90,6 +91,12 @@ uimenu( ... 'Callback', pCallbacks.saveInterim ... ); +uimenu( ... + artoaGui.main.menus.fileSave, ... + 'Label', 'Optimum tables', ... + 'Callback', pCallbacks.saveOptimumTables ... +); + artoaGui.main.menus.fileReloadArtoaIni = uimenu( ... artoaGui.main.menus.file, ... 'Label', 'Reload artoa.ini', ... diff --git a/lib/+artoa/+offsets/solve.m b/lib/+artoa/+offsets/solve.m index 47e50d9..bc02ca6 100644 --- a/lib/+artoa/+offsets/solve.m +++ b/lib/+artoa/+offsets/solve.m @@ -1,9 +1,9 @@ -function [A, B, X, unfilteredA] = solve(pRfb, pSoundsources, pTrackingParameter, pToaData, pSatData, pAppliedTemperature, pAppliedPressure, pLeapsecondsMatrix, pOffsetsParameter) +function [A, B, X, unfilteredA, unfilteredB] = solve(pRfb, pSoundsources, pTrackingParameter, pToaData, pSatData, pAppliedTemperature, pAppliedPressure, pLeapsecondsMatrix, pOffsetsParameter) %UNTITLED Summary of this function goes here % Detailed explanation goes here %% Construct matrices A and B -[unfilteredA, B] = artoa.offsets.createCalculationTables( ... +[unfilteredA, unfilteredB] = artoa.offsets.createCalculationTables( ... pRfb, ... pSoundsources, ... pTrackingParameter, ... @@ -17,7 +17,7 @@ function [A, B, X, unfilteredA] = solve(pRfb, pSoundsources, pTrackingParameter, %% Subtract all known offsets [B] = artoa.offsets.subtractKnownOffsets( ... unfilteredA, ... - B, ... + unfilteredB, ... pOffsetsParameter.offsets ... ); -- GitLab