Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2021, 16:55   #1
Kolikol
Новичок
Джуниор
 
Регистрация: 15.11.2021
Сообщений: 1
Сообщение Помогите решить, при этом объяснив почему именно так делается

Фильтрация данных

[данные; фильтрация]

При любых измерениях физических величин используются измерительные приборы, каждый из которых имеет некоторую погрешность. Для минимизации этой погрешности применяются различные методы фильтрации. Одним из самых простых является метод простого скользящего среднего (SMA, Simple Moving Average).



Входом такого фильтра является необработанный сигнал (в виде массива значений) и один единственный параметр – размер окна (значение этого параметра всегда целое нечётное число). Выходом является массив значений фильтрованного сигнала, элементы которого вычисляются по формуле:

y
i
=
1
N
i
+
(
N

1
)
/
2

i

(
N

1
)
/
2

x
i
,

где
N
– размер окна;
x
i
– элемент необработанного сигнала;
y
i
– элемент фильтрованного сигнала.

Таким образом, вычисляется среднее арифметическое
N
элементов вокруг
i
-ого элемента исходного массива. На рисунке приведён пример расчёта элементов массива фильтрованных данных с размером окна
N
=
5
.



При таком подходе возникает проблема с несколькими элементами в начале и в конце исходного массива. Например, если
N
=
5
, то для 0-го и 1-го элементов мы просто не сможем выбрать 5 элементов вокруг них для вычисления среднего арифметического. Существует несколько способов учёта таких элементов. Первый, и самый простой, отбросить эти элементы (в этом случае длина массива фильтрованных данных будет на
N

1
меньше, чем длина исходного массива). Второй способ – оставить эти элементы без изменений и просто перенести их в массив с фильтрованными данными. Третий способ – фильтровать эти элементы с уменьшенным размером окна.

Напишите программу на языке C++ или Python, осуществляющую фильтрацию входного массива данных методом простого скользящего среднего. Крайние значения входного массива должны быть учтены без изменений.

Формат входных данных

На вход программы первой строчкой поступает размер окна – целое нечетное число, не превышающее размер массива входного сигнала. На второй строчке идет строка чисел входного сигнала, округленных до 3-го знака после запятой и разделенных пробелами. Количество значений входного сигнала может быть различным, но не больше 25.

Формат выходных данных

Необходимо вывести на стандартный вывод отфильтрованный массив данных. Все значения должны быть выведены в одну строку через пробел и округлены до трех знаков после запятой по правилам математического округления. Количество значений в выходной строке всегда должно совпадать с количеством значений входного сигнала.
Лимит по времени: 5 сек
Kolikol вне форума Ответить с цитированием
Старый 20.11.2021, 13:44   #2
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Для таких авторов есть отдельный котел компьютер в углу
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Принципы работы потоков - нужно сделать так чтобы все потоки работали с переменной ID по порядку, но при этом не мешали работе друг друга. Vlad2891 Общие вопросы Delphi 6 25.12.2019 10:12
Почему работает именно так AlexKain HTML и CSS 3 17.12.2015 22:36
Помогите пожалуйста решить, ничего в этом не понимаю KatarinaDe Lazarus, Free Pascal, CodeTyphon 12 11.11.2015 09:39
как сделать вывод категории так чтоб он выводил сразу именно ту категорию которая будет принята при добавлении товара влдаислав PHP 7 28.01.2015 23:07
почему так? помогите решить evgenrpo Общие вопросы C/C++ 6 31.05.2009 22:43