|
Сортировка данных |
|
|
|
Oct 21 2009, 16:34
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Какие посоветуете методы сортировки данных в реальном времени? Данные поступают с АЦП и поэтому времени на их обработку мало. ЗЫ Метод пузырька не предлагать
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 17:07
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Цитата(Goodefine @ Oct 21 2009, 22:39)  Какая глубина сортировки требуется? Дело пожалуй не в глубине, а в скорости обработки данных. Данные с АЦП будут записываться в некоторый массив фиксированной длинны из которого надо найти MIN,MAX и их номера. Вот пожалуй и все требования к алгоритму внешней сортировки. ЗЫ Чтобы не тратить время на перемещение, сравнение, умножение и прочие ненужности. Требуется простой и быстрый  ну или можно непростой - тоже сойдет
Сообщение отредактировал Sneg_87 - Oct 21 2009, 17:18
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 17:54
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Цитата(rezident @ Oct 21 2009, 23:37)  А запись в массив с предобработкой или с постобработкой? P.S. Гы  DRUID3 то же самое спросил, но в других терминах  Спасибо за разъяснения  значит все-таки с постобработкой. С начального момента в пустой массив, размер которого не меняется, записываются данные, а старое значенеи заменяется новым. Цитата(Rst7 @ Oct 21 2009, 23:41)  Номера тоже можно сохранять Над этим подумаю, отпишусь поппозднее, как придумаю реализацию. потому как нужны не значения конктретно из массива, а вообще со старта оцифровки. PS Да, чет мне тут мысль нехорошая попала в голову, что даже скажем 10 значений из массива но их всеравно надо будет перезаписывать в массив, чтобы добавить новое значение с АЦП. Может есть методы более оптимальные?
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 18:09
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Цитата(Rst7 @ Oct 22 2009, 00:05)  Так зачем Вам вообще массив?  Хорошо, когда все хорошо  В сигнале просто будут появляться импульсные помехи, а если без сохранения предыдущих значений сигнала, то сложно сказать помеха или максимум. Я исходил из таких соображений.
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 18:12
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Sneg_87 @ Oct 21 2009, 23:54)  значит все-таки с постобработкой. Постобработки или блочный фильтр означает, что значения сначала записываются в массив, а потом с ними что-либо делают. Предобработка или скользящая фильтрация подразумевают наоборот, сначала новое значение как-либо обрабатывается и только потом записывается (или не записывается) в массив. Цитата(Sneg_87 @ Oct 21 2009, 23:54)  С начального момента в пустой массив, размер которого не меняется, записываются данные, а старое значенеи заменяется новым. Цитата(Sneg_87 @ Oct 21 2009, 23:54)  потому как нужны не значения конктретно из массива, а вообще со старта оцифровки. Дык зачем писать в массив, если содержимое его не нужно? Храните два значения (минимум и максимум) и соответственно два номера отсчета. Итого всего четыре переменных. Цитата(Sneg_87 @ Oct 22 2009, 00:09)  если без сохранения предыдущих значений сигнала, то сложно сказать помеха или максимум. Как соотносится предполагаемая длительность помехи с периодом оцифровки сигнала? И что предполагается делать с помехой? Выбрасывать эти значения или как-либо сглаживать?
|
|
|
|
|
Oct 21 2009, 18:32
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Цитата(rezident @ Oct 22 2009, 00:12)  Дык зачем писать в массив, если содержимое его не нужно? Храните два значения (минимум и максимум) и соответственно два номера отсчета. Итого всего четыре переменных.
Как соотносится предполагаемая длительность помехи с периодом оцифровки сигнала? И что предполагается делать с помехой? Выбрасывать эти значения или как-либо сглаживать? В принципе массив не нужен, если отфильтровывать помехи, используя скользящую фильтрацию ( to rezident Отдельное спасибо за объяснение терминологии) Такс, а по помехам сложно конкретно ответить на вопрос (из-за отсутствия осциллограм или чего-то где их можно было увидеть). Мне в задании написали что мол защиту (фильтрацию) сделать от импульсных помех и от помехи, которую в спектре сигнала видно на частоте 200Гц. Частота тактирования МК 50кГц, частота сигнала до 6,5кГц. Видимо длительность помехи вносит вклад т.к. если было бы наоборот о имп помехе никто бы и не сказал
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 18:48
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Sneg_87 @ Oct 22 2009, 00:32)  В принципе массив не нужен, если отфильтровывать помехи, используя скользящую фильтрацию Вы опять что-то не поняли  Скользящая фильтрация (если вы имеете в виду SMA - простое скользящее среднее) это такой способ усреднения с постобработкой и необходимостью обязательно иметь буфер отсчетов. Каждое новое значение поступает в буфер, вытесняя самое старое. Затем считается среднее значение (сумма отсчетов деленная на количество отсчетов) и результатом фильтрации является как раз это среднее. Но тут есть один нюанс, который может облегчить вычисления. Если в качестве отсчетов используются целые числа, то не обязательно каждый раз считать сумму всех отсчетов. Достаточно хранить эту сумму в отдельной переменной и при вычислении среднего вычитать из нее старое (выбывающее) значение и добавлять новое значение, а затем делить на количество отсчетов. Для чисел в плавающем формате такой способ не подходит, т.к. очень быстро накапливаются ошибки округления в сумме отсчетов. Цитата(Sneg_87 @ Oct 22 2009, 00:32)  Частота тактирования МК 50кГц, частота сигнала до 6,5кГц. Видимо длительность помехи вносит вклад т.к. если было бы наоборот о имп помехе никто бы и не сказал  Дык в том и вопрос: какова длительность помехи?
|
|
|
|
|
Oct 22 2009, 03:34
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Цитата(rezident @ Oct 22 2009, 00:48)  Для чисел в плавающем формате такой способ не подходит, т.к. очень быстро накапливаются ошибки округления в сумме отсчетов. Тип данных с плавающей запятой для данных с АЦП. Цитата(rezident @ Oct 22 2009, 00:48)  Дык в том и вопрос: какова длительность помехи? Частота дискретизации 50кГц, значит длительность одного измерения ~ 20мкс и помехи в том числе (еслия правильно все понимаю  ) Сигнал может быль не очень идеальный (П-помеха импульсная, С-чистый сигнал), поэтому возможны следующие ситуации: СССПСПСПССС ССППССССССС
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|