using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BCMToolbox.Stimuli { public class ConsistentExcitator : StimulatorBase { public const string CE_INTERVALS = "CE Intervals"; public const string CE_MAXSTRENGTH = "CE Max Strength"; public const string CE_MINSTRENGTH = "CE Min Strength"; public const string CE_WIDTH = "CE Interval Width"; Random r = new Random(); public override string[] GetParameters() { return new string[] { STIMULUS_LENGTH, STIMULUS_START, CE_INTERVALS, CE_MAXSTRENGTH, CE_MINSTRENGTH, CE_WIDTH}; } protected override void Apply() { int intervals = (int)__parameters[CE_INTERVALS]; int width = (int)__parameters[CE_WIDTH]; double maxStrength = GetDouble(__parameters[CE_MAXSTRENGTH]); double minStrength = GetDouble(__parameters[CE_MINSTRENGTH]); double[] allChannels = new double[this.Bound.Count]; int intervalWidth = this.Bound.Count / intervals; for (int i = 0; i < intervals; i++) { int intervalStart = i * intervalWidth; intervalStart += (intervalWidth - width) / 2; for (int j = 0; j < width; j++) allChannels[intervalStart + j] = r.NextDouble() * (maxStrength-minStrength) + minStrength; } this.Bound.ApplyInputs(allChannels); } } }