Skip to content

bode.cpp

#include <plotpp.hpp>
#include <valarray>


int main(){
    using namespace plotpp;

    std::valarray<double> magnitudes{1.02544, 1.03233, 1.04474, 1.06217, 1.08696, 1.12274, 1.17554, 1.25606, 1.38506, 1.52648, 1.73105, 2.00318, 2.36546, 2.84452, 3.45721, 4.16329, 4.78114, 5.02519, 4.7485, 3.95567, 3.00198, 2.18775, 1.57679, 1.1338, 0.812663, 0.638681, 0.577917, 0.396094, 0.262676, 0.179776, 0.125561, 0.088894, 0.0635239, 0.045691, 0.0330162, 0.0239361, 0.0173944, 0.0126622, 0.00922881, 0.00673246, 0.00491459, 0.00396317};

    std::valarray<double> mag_dB = 20 * std::log10(magnitudes);

    std::valarray<double> phases{-1.87051, -2.11605, -2.50443, -2.97793, -3.56431, -4.30654, -5.27535, -6.59671, -8.51898, -10.4932, -13.2407, -16.8283, -21.6288, -28.2053, -37.3562, -49.9633, -66.2047, -84.2318, -103.431, -122.522, -137.895, -148.926, -156.63, -162.09, -166.068, -168.27, -169.054, -171.481, -173.403, -174.725, -175.693, -176.436, -177.022, -177.496, -177.884, -178.206, -178.476, -178.702, -178.894, -179.057, -179.195, -179.277};

    std::valarray<double> frequencies{100, 112.366, 131.399, 153.656, 179.684, 210.12, 245.712, 287.333, 336.004, 374.813, 415.676, 454.032, 489.53, 521.993, 551.376, 577.742, 601.223, 622.004, 643.502, 669.657, 701.678, 741.176, 790.326, 852.118, 930.744, 1000, 1032.22, 1174.94, 1373.96, 1606.69, 1878.85, 2197.1, 2569.27, 3004.47, 3513.39, 4108.52, 4804.46, 5618.28, 6569.95, 7682.82, 8984.2, 10000};

    auto mfig = bode(&frequencies, &mag_dB, &phases);
    mfig.show().save("bode-plot.svg");
}

Filename: bode.cpp


Updated on 2025-03-11 at 16:08:10 +0100