private static double plotBodeForAlpha(double alpha, double deltaT) { YoVariableRegistry registry = new YoVariableRegistry("Test"); ButterworthFilteredYoVariable butterworthFilteredYoVariable = new ButterworthFilteredYoVariable("test", registry, alpha, ButterworthFilterType.LOW_PASS); double startFreq = 1e-2; double endFreq = 0.25 * (1.0 / deltaT); int numberOfTestPoints = 100; double deltaFreq = (endFreq - startFreq) / (numberOfTestPoints - 1); ArrayList<Double> testFrequencies = new ArrayList<Double>(); ArrayList<Double> attenuations = new ArrayList<Double>(); for (double freq = startFreq; freq <= endFreq; freq = freq + deltaFreq) { int numberOfCycles = 3; double endTime = (numberOfCycles) / freq; double[][] inputCurve = generateInputCurve(endTime, freq, deltaT); double[][] outputCurve = getFilteredCurve(inputCurve, butterworthFilteredYoVariable); double dB = getMagnitudeInDecibels(inputCurve, outputCurve); testFrequencies.add(freq); attenuations.add(dB); } @SuppressWarnings("unused") ArrayList<Double> testFrequenciesLog = convertToLog(testFrequencies); double breakFreq = getBreakFreq(testFrequencies, attenuations); return breakFreq; }
private static double plotBodeForAlpha(double alpha, double deltaT) { YoVariableRegistry registry = new YoVariableRegistry("Test"); ButterworthFilteredYoVariable butterworthFilteredYoVariable = new ButterworthFilteredYoVariable("test", registry, alpha, ButterworthFilterType.LOW_PASS); double startFreq = 1e-2; double endFreq = 0.25 * (1.0 / deltaT); int numberOfTestPoints = 100; double deltaFreq = (endFreq - startFreq) / (numberOfTestPoints - 1); ArrayList<Double> testFrequencies = new ArrayList<Double>(); ArrayList<Double> attenuations = new ArrayList<Double>(); for (double freq = startFreq; freq <= endFreq; freq = freq + deltaFreq) { int numberOfCycles = 3; double endTime = (numberOfCycles) / freq; double[][] inputCurve = generateInputCurve(endTime, freq, deltaT); double[][] outputCurve = getFilteredCurve(inputCurve, butterworthFilteredYoVariable); double dB = getMagnitudeInDecibels(inputCurve, outputCurve); testFrequencies.add(freq); attenuations.add(dB); } @SuppressWarnings("unused") ArrayList<Double> testFrequenciesLog = convertToLog(testFrequencies); double breakFreq = getBreakFreq(testFrequencies, attenuations); return breakFreq; }