source: proiecte/ParallelANN/BCMToolbox/Stimuli/ConsistentExcitator.cs @ 171

Last change on this file since 171 was 171, checked in by (none), 14 years ago
File size: 1.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5
6namespace BCMToolbox.Stimuli
7{
8    public class ConsistentExcitator : StimulatorBase
9    {
10        public const string CE_INTERVALS = "CE Intervals";
11        public const string CE_MAXSTRENGTH = "CE Max Strength";
12        public const string CE_MINSTRENGTH = "CE Min Strength";
13        public const string CE_WIDTH = "CE Interval Width";
14        Random r = new Random();
15
16        public override string[] GetParameters()
17        {
18            return new string[] {
19                STIMULUS_LENGTH,
20                STIMULUS_START,
21                CE_INTERVALS,
22                CE_MAXSTRENGTH,
23                CE_MINSTRENGTH,
24                CE_WIDTH};
25        }
26
27        protected override void Apply()
28        {
29            int intervals = (int)__parameters[CE_INTERVALS];
30            int width = (int)__parameters[CE_WIDTH];
31
32            double maxStrength = GetDouble(__parameters[CE_MAXSTRENGTH]);
33            double minStrength = GetDouble(__parameters[CE_MINSTRENGTH]);
34           
35
36            double[] allChannels = new double[this.Bound.Count];
37
38            int intervalWidth = this.Bound.Count / intervals;
39
40            for (int i = 0; i < intervals; i++)
41            {
42                int intervalStart = i * intervalWidth;
43                intervalStart += (intervalWidth - width) / 2;
44                for (int j = 0; j < width; j++)
45                    allChannels[intervalStart + j] = r.NextDouble() * (maxStrength-minStrength) + minStrength;
46            }
47
48            this.Bound.ApplyInputs(allChannels);
49        }
50    }
51}
Note: See TracBrowser for help on using the repository browser.