Skip to content
Snippets Groups Projects
Verified Commit 3aaf84a9 authored by Thomas Lambert's avatar Thomas Lambert :helicopter:
Browse files

fix(process): comply with new id format and data dir

parent 1b63ec95
No related branches found
No related tags found
No related merge requests found
......@@ -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;
......
......@@ -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);
......
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
......@@ -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
......
......@@ -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
......
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