// General constants
const long double dbSignalPeriod = 0.0001;
const long double dbSamplingPeriod = dbSignalPeriod / 1000.0; // 1000 samples in a period
const long double dbNumberOfPeriods = 5.0; // Number of periods to plot
ControlSystemBlock RCFilter(PolynomialFraction<long double>(1, 2, 1.0, 1.0, 0.00001), dbSamplingPeriod);
long double R=180, L=0.0001, C=0.0000001; // Circuit elements
long double Wn = 1.0/Math::pow(L*C, 0.5) , dr = Math::pow(C/L, 0.5)*R/2.0; // Natural frequency and damping ratio
ControlSystemBlock RLCFilter(PolynomialFraction<long double>(1, 3, Wn*Wn, Wn*Wn, 2*dr*Wn, 1.0), dbSamplingPeriod);
MatlabPlotter Plotting;
MatlabPlotter::GraphId Graph1, Graph2, Graph3;
Graph1 = Plotting.AddGraph();
Graph2 = Plotting.AddGraph();
Graph3 = Plotting.AddGraph();
long double dbSignalValue;
for (long double i=0; i<dbNumberOfPeriods*dbSignalPeriod ; i+=dbSamplingPeriod)
{
dbSignalValue = (Math::IsEven(static_cast<int64_t>(i / dbSignalPeriod))) ? 1.0 : -1.0;
Plotting.AddData(Graph1, i, dbSignalValue);
Plotting.AddData(Graph2, i, RCFilter.SendInput(dbSignalValue));
Plotting.AddData(Graph3, i, RLCFilter.SendInput(/*10000000000.0**/dbSignalValue));
}
// Plotting.SetLineType(Graph1, MatlabGraph::LINE_TYPES::LT_DASHED);
// Plotting.SetLineType(Graph2, MatlabGraph::LINE_TYPES::LT_SOLID);
Plotting.SetLineColor(Graph1, MatlabGraph::LINE_COLORS::LC_BLUE);
Plotting.SetLineColor(Graph2, MatlabGraph::LINE_COLORS::LC_RED);
Plotting.SetLineColor(Graph3, MatlabGraph::LINE_COLORS::LC_GREEN);
//Plotting.SetXYLimits(-0.1, 7.0, -1.5, 1.5);
Plotting.SetWindowTitle("MatlabPlotter - by hkBattousai");
Plotting.SetPlottingTitle("Square wave applied to RC and RLC filters");
Plotting.SetXLabel("time");
Plotting.SetYLabel("amplitude");
//std::cout << Plotting.GetPlotCommand() << std::endl;
Plotting.ExportPlotCommandToFile(L"C:\\Users\\hkBattousai\\Documents\\MATLAB\\ExportedPlotData.m", true);