internal static IMeasurement[] CreateMeasures(double[] state, double[] der, RationalTransformControlSystemData transform, IMeasurement measure, out List <string> mes) { mes = new List <string>(); List <IMeasurement> l = new List <IMeasurement>(); new MeasureInternal(state, der, 0, "x", l, measure, mes); if (transform.nom.Length == transform.denom.Length) { l.Add(transform); } else { l.Add(new OutputMeasure(transform)); } return(l.ToArray()); }
internal OutputMeasure(RationalTransformControlSystemData transform) { name = "Output"; vector = new double[transform.denom.Length - transform.nom.Length + 1]; i = 0; outputs = new OutputMeasure[vector.Length - 1]; outputs[0] = this; par = () => { transform.CalculateDerivations(vector); return(vector[i]); }; for (int j = 1; j < vector.Length - 1; j++) { new OutputMeasure(j, vector, outputs); } for (int j = 0; j < vector.Length - 2; j++) { outputs[j].der = outputs[j + 1]; } int n = vector.Length - 1; outputs[vector.Length - 2].der = new LastMeasure(vector); }