diff --git a/sensitivityAnalysis/src/postprocess/postprocessAscent.m b/sensitivityAnalysis/src/postprocess/postprocessAscent.m index 55dfeb58d251f6bbe6c5e3b4421843c1542092e0..c60943a450e5e5546687beb6094d30a787dc7d54 100644 --- a/sensitivityAnalysis/src/postprocess/postprocessAscent.m +++ b/sensitivityAnalysis/src/postprocess/postprocessAscent.m @@ -277,63 +277,52 @@ for i = 1:N % - Altitude is assigned as the minimum value within the same bin. % This is done to capture the worst-case conditions for the structural analysis of the rocket's fins. - mach = ascent(i).interp.mach; - alpha = ascent(i).interp.alpha; - beta = ascent(i).interp.beta; - alt = ascent(i).interp.alt; - indMax = find(mach == machMax(i)); - - edgesAcc = mach(1):0.05:machMax(i); - - % Acceleration - machAcc = mach(1:indMax); - alphaAcc = alpha(1:indMax); - betaAcc = beta(1:indMax); - altAcc = alt(1:indMax); - - alphaMaxAcc = NaN((length(edgesAcc)-1), 1); - betaMaxAcc = NaN((length(edgesAcc)-1), 1); - altMinAcc = NaN((length(edgesAcc)-1), 1); + mach0 = ascent(i).interp.mach; + alpha0 = ascent(i).interp.alpha; + beta0 = ascent(i).interp.beta; + alt0 = ascent(i).interp.alt; + indMax = find(mach0 == machMax(i)); + + types = ["machAccVersus", "machDecVersus"]; - for j = 2:length(edgesAcc) - inBin = machAcc > edgesAcc(j-1) & machAcc <= edgesAcc(j); - if any(inBin) - alphaMaxAcc(j-1) = max(alphaAcc(inBin)); - betaMaxAcc(j-1) = max(betaAcc(inBin)); - altMinAcc(j-1) = min(altAcc(inBin)); + for t = types + if t == "machAccVersus" + edges = (mach0(1):0.05:machMax(i))'; + mach = mach0(1:indMax); + alpha = alpha0(1:indMax); + beta = beta0(1:indMax); + alt = alt0(1:indMax); + else + edges = (machMax(i):-0.05:mach0(end))'; + mach = mach0((indMax+1):end); + alpha = alpha0((indMax+1):end); + beta = beta0((indMax+1):end); + alt = alt0((indMax+1):end); end - end + + alphaMax = NaN((length(edges)-1), 1); + betaMax = NaN((length(edges)-1), 1); + altMin = NaN((length(edges)-1), 1); - % Deceleration - edgesDec = machMax(i):-0.05:mach(end); + for k = 2:length(edges) + if t == "machAccVersus" + inBin = mach > edges(k-1) & mach <= edges(k); + else + inBin = mach < edges(k-1) & mach >= edges(k); + end - machDec = mach((indMax+1):end); - alphaDec = alpha((indMax+1):end); - betaDec = beta((indMax+1):end); - altDec = alt((indMax+1):end); - - alphaMaxDec = NaN((length(edgesDec)-1), 1); - betaMaxDec = NaN((length(edgesDec)-1), 1); - altMinDec = NaN((length(edgesDec)-1), 1); - - for j = 2:length(edgesDec) - inBin = machDec < edgesDec(j-1) & machDec >= edgesDec(j); - if any(inBin) - alphaMaxDec(j-1) = max(alphaDec(inBin)); - betaMaxDec(j-1) = max(betaDec(inBin)); - altMinDec(j-1) = min(altDec(inBin)); + if any(inBin) + alphaMax(k-1) = max(alpha(inBin)); + betaMax(k-1) = max(beta(inBin)); + altMin(k-1) = min(alt(inBin)); + end end - end - - machAccVersus(i).mach = edgesAcc(2:end); - machAccVersus(i).alpha = alphaMaxAcc*180/pi; - machAccVersus(i).beta = betaMaxAcc*180/pi; - machAccVersus(i).alt = altMinAcc; - machDecVersus(i).mach = edgesDec(2:end); - machDecVersus(i).alpha = alphaMaxDec*180/pi; - machDecVersus(i).beta = betaMaxDec*180/pi; - machDecVersus(i).alt = altMinDec; + p.(t)(i).mach = edges(2:end); + p.(t)(i).alpha = alphaMax*180/pi; + p.(t)(i).beta = betaMax*180/pi; + p.(t)(i).alt = altMin; + end end %% Saving data @@ -401,6 +390,6 @@ end postp.nSim = N; postp.confidence = settings.sensitivity.plots.confidence; -postp.machAccVersus = machAccVersus; -postp.machDecVersus = machDecVersus; +postp.machAccVersus = p.machAccVersus; +postp.machDecVersus = p.machDecVersus; end \ No newline at end of file