diff --git a/resultsanalysis.m b/resultsanalysis.m index e1d862f253a10de28c336882111ce587d079a98f..65c726c71f134717098d5912d26d09d524313a02 100644 --- a/resultsanalysis.m +++ b/resultsanalysis.m @@ -31,7 +31,11 @@ function ResData = resultsanalysis(matFiles) tmp = load(resFile); ResData(iFile, :) = tmp.ExpData; end - ResData = rmfield(ResData, {'arduStart', 'tunnelStart'}); + % Remove useless data + ResData = rmfield(ResData, {'arduStart', 'tunnelStart'}); % Useless + % FIXME: remove deprecated + ResData = rmfield(ResData, {'arduFile', 'tunnelFile', ... + 'dx', 'airspeed', 'freq', 'front', 'aft'}); % Cache values to prevent excessive reloads matFiles_ = matFiles; @@ -40,14 +44,65 @@ function ResData = resultsanalysis(matFiles) ResData = ResData_; end + ResData = getallphases(ResData, OFFSET_VALUES); + + ResData = getmeancoefficients(ResData); + +end + +function ResData = getallphases(ResData, offsetVal) + % GETALLPHASES Determine the range for all phase offsets + for i = 1:size(ResData, 1) for j = 1:size(ResData, 2) + fprintf('\nFinding phase for element (%d,%d): %0.2fm, %0.2fHz, %0.1fm/s\n', ... - i, j, ResData(i, j).dx, ResData(i, j).freq, ResData(i, j).airspeed); + i, j, ... + ResData(i, j).Testcase.dx, ... + ResData(i, j).Testcase.freq, ... + ResData(i, j).Testcase.airspeed); + + for k = 1:length(offsetVal) + ResData(i, j).Phase(k).phaseVal = offsetVal(k); + ResData(i, j).Phase(k).idx = findwingphase(ResData(i, j), offsetVal(k)); + end + end + end +end + +function ResData = getmeancoefficients(ResData) + % GETMEANCOEFFICIENTS Returns the true mean coefficients + + for i = 1:size(ResData, 1) + for j = 1:size(ResData, 2) + + % Remove inertia forces + woIdx = (j) - mod(j - 1, 4); + ResData(i, j) = removeinertia(ResData(i, j), ResData(i, woIdx), 'Front'); + ResData(i, j) = removeinertia(ResData(i, j), ResData(i, woIdx), 'Aft'); + + % Transform forces/moments into coefficients + ResData(i, j) = calccoeff(ResData(i, j)); + + end + end +end + +function ResData = calccoeff(ResData) + + POSITIONS = {'Front', 'Aft'}; + CHORD = 0.05; + SPAN = 2 * 0.2; - for k = 1:length(OFFSET_VALUES) - ResData(i, j).Phase(k).phaseVal = OFFSET_VALUES(k); - ResData(i, j).Phase(k).idx = findwingphase(ResData(i, j), OFFSET_VALUES(k)); + if ~isempty(ResData.Phase.idx) + for i = 1:length(ResData.Phase.idx) + for j = 1:length(POSITIONS) + dens = airdensity(ResData.Testcase.temp, ResData.Testcase.press); + speed = ResData.Testcase.airspeed; + coeffF = forcetocoeff(ResData.Phase(i).(POSITIONS{j}).forces, ... + dens, speed, CHORD, SPAN, 'force'); + coeffM = forcetocoeff(ResData.Phase(i).(POSITIONS{j}).moments, ... + dens, speed, CHORD, SPAN, 'moment'); end end end