public ConversionViewModel(SignalViewModel first) { firstSignalViewModel = first; secondSignalViewModel = new SignalViewModel(); SamplingFrequency = new FunctionAttribute <int>(10, false, 1, 5000, "SAMPLING FREQUENCY"); QuantizationBits = new FunctionAttribute <int>(3, false, 2, 10, "QUANTIZATION BITS"); QuantizationLevels = new FunctionAttribute <int>(8, false, 2, 1024, "QUANTIZATION LEVELS"); AttributesBinding.BindAttributesTwoWay(QuantizationLevels, QuantizationBits, new LogarithmConverter()); NumberOfSamples = new FunctionAttribute <int>(5, false, 2, 500, "NUMBER OF SAMPLES"); AnalogToDigitalConversionOperations = new List <string> { "UNIFORM SAMPLING", "UNIFORM QUANTIZATION" }; DigitalToAnalogConversionOperations = new List <string> { "ZERO-ORDER HOLD", "SINC RECONSTRUCTION" }; Operation = string.Empty; MaximumDifference = new Parameter(0.0d, "MAXIMUM DIFFERENCE"); SignalToNoiseRatio = new Parameter(0, "SIGNAL TO NOISE RATIO"); MeanSquaredError = new Parameter(0, "MEAN SQUARED ERROR"); PeakSignalToNoiseRatio = new Parameter(0, "PEAK SIGNAL TO NOISE RATIO"); Attributes = new List <FunctionAttribute <int> >( new[] { SamplingFrequency, QuantizationLevels, QuantizationBits, NumberOfSamples }); ConversionMetrics = new List <Parameter>(new[] { MeanSquaredError, MaximumDifference, SignalToNoiseRatio, PeakSignalToNoiseRatio }); FirstSignalData.Continuous.PropertyChanged += (sender, args) => OnPropertyChanged(nameof(IsSignalAnalog)); }
public FunctionData( double startTime = 0, double amplitude = 50, double period = 1, double duration = 2, double dutyCycle = 0.5, int samples = 500, int histogramIntervals = 10, double probability = 0.5, bool continuous = true, Signal type = Signal.Sine) { Amplitude = new FunctionAttribute <double>( amplitude, false, Settings.Default.AmplitudeMin, Settings.Default.AmplitudeMax, "AMPLITUDE"); Period = new FunctionAttribute <double>( period, false, Settings.Default.PeriodMin, Settings.Default.PeriodMax, "PERIOD"); Frequency = new FunctionAttribute <double>( 1.0d / period, false, 1.0d / Settings.Default.PeriodMax, 1.0d / Settings.Default.PeriodMin, "FREQUENCY"); Samples = new FunctionAttribute <int>( samples, false, Settings.Default.SamplesMin, Settings.Default.SamplesMax, "NUMBER OF SAMPLES"); StartTime = new FunctionAttribute <double>( startTime, false, Settings.Default.StartTimeMin, Settings.Default.StartTimeMax, "STARTING TIME"); Duration = new FunctionAttribute <double>( duration, false, Settings.Default.DurationMin, Settings.Default.DurationMax, "DURATION"); DutyCycle = new FunctionAttribute <double>( dutyCycle, false, Settings.Default.DutyCycleMin, Settings.Default.DutyCycleMax, "DUTY CYCLE"); HistogramIntervals = new FunctionAttribute <int>( histogramIntervals, true, Settings.Default.HistogramIntervalMin, Settings.Default.HistogramIntervalMax, "NUMBER OF INTERVALS"); Probability = new FunctionAttribute <double>(probability, false, 0, 1, "PROBABILITY"); Continuous = new FunctionAttribute <bool>(true, false, false, true, "CONTINUITY"); AverageValue = new Parameter(0, "AVERAGE VALUE"); AbsoluteAverageValue = new Parameter(0, "ABSOLUTE AVERAGE VALUE"); AveragePower = new Parameter(0, "AVERAGE POWER"); Variance = new Parameter(0, "VARIANCE"); RootMeanSquare = new Parameter(0, "ROOT MEAN SQUARE"); Parameters = new List <Parameter>( new[] { AverageValue, AbsoluteAverageValue, AveragePower, Variance, RootMeanSquare }); Attributes = new List <object>( new object[] { Amplitude, Period, Frequency, Samples, StartTime, Duration, DutyCycle, Probability }); HistogramAttributes = new List <object>(new object[] { HistogramIntervals }); Points = new List <Point>(); HistogramPoints = new List <Point>(); AttributesBinding.BindAttributesTwoWay(Frequency, Period, new FrequencyPeriodConverter()); RequiredAttributes = new Required(false, false, false, false, false, false, false, false); Continuous.Value = continuous; Type = type; }