Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static double[][] get_accumulation
- (
- string path, // путь к файлу
- List<int> frequencies, // список эталонных частот
- int sensor_id, // порядковый номер датчика
- int duration, // длительность эпохи
- int sampling_freq, // частота дискретизации
- int accum_count // сколько раз накапливаем сигнал
- )
- {
- duration *= sampling_freq; // для случая, если измеряем длительность в секундах, если в отсчетах, не нужно
- double[][] result = new double[frequencies.Count][];
- for (int i = 0; i < frequencies.Count; i++) result[i] = new double[duration];
- int index = Array.FindIndex(File.ReadLines(path)
- .Skip(4)
- .Take(20000)
- .SelectMany(d => d.Split(' ')
- .Take(1)
- .Select(int.Parse))
- .ToArray(), delegate (int i) { return i == 1; });
- int[] vect = File.ReadLines(path)
- .Skip(4 + index)
- .SelectMany(d => d.Split(' ')
- .Skip(sensor_id + 1)
- .Take(1)
- .Select(int.Parse))
- .ToArray();
- GC.Collect();
- for (int i = 0; i < frequencies.Count; i++)
- {
- int stimulation_period = sampling_freq / frequencies[i];
- for (int ii = 0; ii < accum_count; ii++)
- {
- for (int iii = 0; iii < duration; iii++)
- {
- result[i][iii] += vect[ii * stimulation_period + iii];
- }
- }
- for (int ii = 0; ii < duration; ii++)
- {
- result[i][ii] /= accum_count;
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement