diff --git a/processall.m b/processall.m index ba46c5a8d88928a979f0bf3165e87451fc9867f0..106a58eea4931555fb0c3ee84e673d6fca803c82 100644 --- a/processall.m +++ b/processall.m @@ -44,21 +44,27 @@ function ExpData = processall(idFile) % Input checks and processing % [filePaths, fileNames] = getfiles(idFile); %TODO + % FIXME: Detect automatically from idFile + fileRootDir = 'data/2022-campaign1'; % Root directory of data files (e.g. data/YYYY-campaignX) + idTable = loadid(idFile); + ExpData(size(idTable, 1)) = struct; for iTest = 1:size(idTable, 1) - ExpData(iTest).arduFile = idTable(iTest, :).arduinoFile{:}; - ExpData(iTest).tunnelFile = idTable(iTest, :).wtFile{:}; + ExpData(iTest).arduFile = fullfile(fileRootDir, 'arduinoData', ... + idTable(iTest, :).arduinoData{:}); + ExpData(iTest).tunnelFile = fullfile(fileRootDir, 'windtunnelData', ... + idTable(iTest, :).windtunnelData{:}); ExpData(iTest).dx = idTable(iTest, :).dstX; - ExpData(iTest).airspeed = idTable(iTest, :).v_air; - ExpData(iTest).freq = idTable(iTest, :).freq; + ExpData(iTest).airspeed = idTable(iTest, :).airspeed; + ExpData(iTest).freq = idTable(iTest, :).target_freq; fprintf('Processing file: %s\n', ExpData(iTest).tunnelFile); % Load, clean and sync experimental data tunnelData = loadtunnel(ExpData(iTest).tunnelFile, ... - CUTOFF_MULTIPLIER * idTable(iTest, :).freq); + CUTOFF_MULTIPLIER * idTable(iTest, :).target_freq); if ~isempty(ExpData(iTest).arduFile) % Not for static tests (no ardu data) [arduShort, ~] = loadardu(ExpData(iTest).arduFile); @@ -103,10 +109,10 @@ function ExpData = processall(idFile) ExpData(iTest).Aft.moments = tunnelData(:, 6 + (4:6)); ExpData(iTest).Testcase.dx = idTable(iTest, :).dstX; - ExpData(iTest).Testcase.airspeed = idTable(iTest, :).v_air; - ExpData(iTest).Testcase.freq = idTable(iTest, :).freq; - ExpData(iTest).Testcase.temp = idTable(iTest, :).temp_air; - ExpData(iTest).Testcase.press = idTable(iTest, :).pres_air; + ExpData(iTest).Testcase.airspeed = idTable(iTest, :).airspeed; + ExpData(iTest).Testcase.freq = idTable(iTest, :).target_freq; + ExpData(iTest).Testcase.temp = idTable(iTest, :).temperature; + ExpData(iTest).Testcase.press = idTable(iTest, :).pressure; if PLOT_CLEANED figure; diff --git a/utils/loadardu.m b/utils/loadardu.m index cceda540a41b31502d26aaedc652d98b2097b9a3..71a01976775a8d53483bd185f73bbe1d12af9663 100644 --- a/utils/loadardu.m +++ b/utils/loadardu.m @@ -35,7 +35,7 @@ function [arduShort, arduData] = loadardu(arduFile) % Load data arduTable = table; if ~isempty(arduFile) - arduTable = loadcsv(['arduinoFiles/', arduFile, '.csv']); + arduTable = loadcsv([arduFile, '.csv']); end arduTable.time = timetosec(arduTable.time); diff --git a/utils/loadid.m b/utils/loadid.m index 784984937d1386f7619f7a1b4db7ab839c67c2a9..80513c5f05b6b56bfe55c75fbcc84440ce60c446 100644 --- a/utils/loadid.m +++ b/utils/loadid.m @@ -1,5 +1,16 @@ function idTable = loadid(idFile) % LOADID Load the identification file into a table. + % + % Note + % The identification table must obey to the following scheme + % # Header line 1 + % # ... (any number of header lines) + % # Header last line + % DataName1, DataName2, ..., DataNameN + % DataUnit1, DataUnit2, ..., DataUnitN + % Data1, Data2, ..., Data3 + % + % The number of header lines is NOT detected automatically and must be specified as a constant % ----- % % Syntax: @@ -22,12 +33,16 @@ function idTable = loadid(idFile) % MIT License %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Defaults and constants + COMMENT_LINES = 3; % Number of commented lines in the header + % Tweak options before import opts = detectImportOptions(idFile); - opts.VariableNamesLine = 3; - opts.VariableUnitsLine = 4; - opts.DataLines = [5 Inf]; + opts.VariableNamesLine = COMMENT_LINES + 1; + opts.VariableUnitsLine = COMMENT_LINES + 2; + opts.DataLines = [COMMENT_LINES + 3 Inf]; % Import idTable = readtable(idFile, opts); + end diff --git a/utils/loadtunnel.m b/utils/loadtunnel.m index 4a8cee49a074795b2e6c828c3a1b1570ce1fcf50..714a2a689d74b1f98b18dbec467489e3eef0de55 100644 --- a/utils/loadtunnel.m +++ b/utils/loadtunnel.m @@ -35,7 +35,7 @@ function tunnelData = loadtunnel(tunnelFile, cutoff) % Load data tunnelTable = table; if ~isempty(tunnelFile) - tunnelTable = loadcsv(['wtFiles/', tunnelFile, '.txt']); + tunnelTable = loadcsv([tunnelFile, '.txt']); end % Convert into table diff --git a/utils/savecsv.m b/utils/savecsv.m index 6a9f7450c0db4316e9168afe7eff09fa34ae7e9f..09b663a896f2fce578d55c121dc0098845c134b6 100644 --- a/utils/savecsv.m +++ b/utils/savecsv.m @@ -36,7 +36,8 @@ function savecsv(ExpData, arduShort, tunnelData) testCase = string(dirSplits(end)); filename = sprintf('%s-%0.0fcm-f%0.2f-U%0.1f.csv', ... testCase, ExpData.dx * 100, ExpData.freq, ExpData.airspeed); - savefile = fullfile('data/cleaned', dirSplits(1), filename); + + savefile = fullfile('data/cleaned', dirSplits(4), filename); % FIXME Better detect splits if ~exist(string(savefile), 'file') || ALWAYS_OVERWRITE % Merges the two arrays together and put it in table