Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/304: Рейтинг темы: голосов - 304, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
1

цифровые полосовые фильтры

20.10.2012, 02:03. Просмотров 55499. Ответов 106
Метки нет (Все метки)

Решил разобраться с фильтрацией сигналов

Для начала курил статью из википедии
http://ru.wikipedia.org/wiki/%D6%E8%F4% ... B%FC%F2%F0

и далее по ссылкам
http://ru.wikipedia.org/wiki/Фильтр_с_конечной_импульсной_характеристикой
http://ru.wikipedia.org/wiki/Фильтр_с_бесконечной_импульсной_характеристикой

я так понимаю эти фильтры просто используют сложение (при единичных коэффициентах), можно складывать текущее значение сигнала с со значением +- 1 период (ну Т=2*pi строго говоря) или пол периода (Т=1*pi), нужная частота усиливается (вплоть до самовозбуждения фильтра при корявых настройках), а ненужные гасятся. Вроде как можно даже без умножения обойтись, или только функциями умножения и деления на 2 типа (x>>1) или (x<<1).


<Изображение удалено>

+1, -1, +1, -1 и как-то он отфильтрует.

или такой фильтр,


<Изображение удалено>

Не нашел простой информации как расчитать такой фильтр, нет явного объяснения сути, принципа работы фильтра. Я некоторое время думал над вопросом и примерно понял!

Самый простой вариант. Если то что на схеме указано как "-а1" берем равной 0.9 получаем простой фильтр НЧ, интегратор или аналог сглаживающей RC цепочки (всё остальное не используется)

типа y(i)=0.9*y(i-1) + 0.1*x(i) (по сути средне арифметическое выходного сигнала и входного)

сколько использовал для усреднения не знал что это частный случай фильтра с бесконечной импульсной характеристикой )) тут главное чтобы 0.9 + 0.1 = 1, иначе сигнал рекурсивно улетит в бесконечность (бесконечность это FFh, FF FFh и т.п.)

Вот для примера отфильтровал шум таким фильтром


<Изображение удалено>

синий "график" шум, красный после фильтра, причем начальное значение 1, и постепенно падает под среднее значение, примерно стремиться к постоянной состовляющей, к нулю, изменяя текущее значение всего на 0.1 от входного значения, и на 0.9 от предыдущего значения.

Если использовать большее число элементов, можно выделять или гасить нужные частоты в спектре, начал с простого


<Изображение удалено>

Допустим нам нужно выделить синусоиду с периодом в 10 сигналов, значения
1 0
2 +0.7
3 +1
4 +0.7
5 0

7 -0.7
8 -1
9 -0.7
10 0

12 +0.7
13 +1
14 +0.7
15 0

17 -0.7
18 -1
19 -0.7
20 0
...
...
и так далее - типа синусоида (с парой опечаток)
Смотрите, значения №3 и №13 идентичны! Можно сложить значения со смещением в 10 единиц и получть усиленный в 2 раза сигнал, а помеха, если она есть, может быть как ослабленна, так и усиленна, но не в 2 раза, в любом случае меньше.

Используя только формулу
Y(i)=X(i) + X(i-10)
мы усилили полезный сигнал с периодом 10 отсчетов.

Далее смотрим, сигнал №3 и №8 антиподы, можно вычитать такие антиподы со смещением в 5 единиц и усиливать тем полезный сигнал
Y(i)=X(i) + (-X(i-5) )

Объеденяя 2 правила получили простой фильтр

Y(i)=X(i) + X(i-10) -X(i-5)

получили усиленную в 3 раза синусоду нужной частоты.

Можно еще немного подумать над синусоидой и добавить полезные члены в формулу, так как кроме идентичных уровней и антиподов есть и другие сигналы, их тоже можно задействовать, например №3 и №8 идентичные, а №3 и №2-№4 очень похожи (смещение 9 и 11), разница всего 30%, почему бы их не сложить тоже? можно с коэффициентом 0.5, что удобно в вычислениях

Y(i)=X(i) + X(i-10) -X(i-5) + 0.5*X(i-9) + 0.5*X(i-11)

получили полезный сигнал увеличенный почти в 4 раза. Можно еще задействовать члены, одинаковые складываем, антиподы отнимаем, с каждым действием полезный сигнал усиливается.

Набросал этот алгоритм в excel - работает! силой мысли заменили муторные вычисления в матлабе, маткаде и что-то из курса высшей математики :)


<Изображение удалено>

синусоида с периодом примерно 14 измерений

плюс шум, что я считал по простому в экселе D3=234246*ОСТАТ(D2; 34578) и E3=ОСТАТ(D3; 100)/50 - 1
(от 0 до 1, вроде без повторений, цифры наугад воткнул)

шум и синусоида примерно одинаковы, синусоида искажена до неузнаваемости.


<Изображение удалено>

синусоида после фильтра, никаких искажений или фазового сдвига

Фильтр простой, в экселе я считал так
I17=(H17-H4-H3-H5-H2-H6+H16+H18)/8
где H - зашумленный сигнал, сигналы антиподы вычитаются, похожие складываются, деление для удобства представления не графике.

Открытым остается вопрос
1. вычисления коэффициентов, желательно кратных 1, 0.5 или 0.75 чтобы проще вычислять значения типа y=(x>>1) + (x>>2) на микроконтроллерах
2. построив передаточную функцию в экселе неприятно огорчила небольшая "дырка" на 3й гармонике, скорее всего придется как-то убивать сигнал кратный по частоте третьей гармонике, при этом фильтр усложняется и падает его качество.


<Изображение удалено>

Ну если честно удивлен небыл, для коээфициентов взятых с потолка очень неплохо помоему :) График строил "вручную", точек мало, но примерно понятно ))

экселевский файлик тоже прилагаю, может кому интересно будет
https://dl.dropbox.som/u/25679385/forum ... ctronl.xls

3. На операционном усилителе и паре RC цепочек делается замечательный фильтр, думаю его можно было бы очень просто эмулировать, вычислений меньше (даже буфер не нужен), точность выше? но он очень уж ненагляден в вычислениях...

Думаю можно простую программку написать, чтобы подбирала коэффициенты по заданным параметрам фильтра. Например нужно выделить нужную частоту, чтобы она в 100 раз стала сильнее шумов, и методом перебора подобрать нужные параметры, при этом используя только удобные коэффициенты.

И совсем другой вопрос, вычисление амплитуды синусоды в зашумленном сигнале, встречал 2 способа
1. Что-то вроде преобразования Фурье, с кучей операций умножения, непонятно и неудобно. Я так понимаю просто отсчеты сигнала перемножаются с периодом 2*Pi (числа с одинаковым знаком попадаются в таком случае) и чем выше полученное число, тем больше амплитуда полезного сигнала. Вроде как FSK модемах такое модно было.
2. В одном из проектов на пике, для анализа DTMF просто сравнивали образцовую синусоиду, с данными от АЦП, чем меньше ошибка, тем точнее входной сигнал. Так как синусоиды могли быть смещены по фазе, сравнивали все варианты, со смещением Pi/4

Вот и у меня мысль возникла, для выделения синуса в зашумленном сигнале, пропустить его через цифровой фильтр что я "придумал" типа
Y(i)=X(i) + X(i-10) -X(i-5) + 0.5*X(i-9) + 0.5*X(i-11) ... ... ...

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

Вся нигия заключается в выборе коээфциентов, количестве отсчетов на период, количестве анализируемых периодов. При выборе фильтра с бесконечной импульсной характеристикой (они круче конечно), задача еще сложнее. Тут вероятно придется накатать программку на дельфях, и суровым перебором вариантов искать оптимальные коэффициенты. Или случайно перебирать, или модным методом градиентного спуска... Может в маткаде фильтры строятся парой кликов или не? :)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2012, 02:03
Ответы с готовыми решениями:

Целочисленные цифровые фильтры
Современное проектирование целочисленных цифровых фильтров (ЦЦФ) - это проектирование по...

Полосовые фильтры с узкой полосой пропускания. Схемы, мысли.
Господа. Уткнулся вот в то, что необходимо сделать надцать полосовых фильтров с весьма приличной...

Закодировать звуковую запись, полученный сигнал пропустить через полосовые фильтры
очень нужна ваша помощь. совсем не разбираюсь в программе матлаб. но очень нужно написать программу...

Цифровые рекурсивные фильтры
Часть 1. Часть 2. Часть 3. Я долго думал, как назвать тему. Вариантов было много: от...

106
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,182
20.10.2012, 02:29 2
В матлабе фильтры строятся парой функций.
Силой мысли и методом научного тыка фильтр построить не получится.

http://www.mathworks.som/help/syknal/ref/fir1.html
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 04:03 3
(удалил как устаревшую информацию)
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,182
20.10.2012, 04:42 4
"Я тебе один умный вещь скажу, только ты не обижайся..."
1. Ты пытаешься изобрести велосипед.
2. Ты пытаешься изобрести велосипед топором и ожидаешь от него невообразимых результатов.

Для начала надо освоить матлаб. Вместо того чтобы задрачиваться с какими-то непонятными графиками в экселях, можно просто набрать одну функцию в матлабе которая мгновенно выдаст ачх и фчх на любой скормленный ей вектор. Все уже давно написано и придумано, надо только научиться им пользоваться, а матлаб реально выучить (при знании английского) самому дома по хелпу и гуглу.
40 тактов на МК это нонсенс. Надо увеличить эту цифру порядков так на несколько. А еще лучше освоить МК заточеные под обработку сигналов.
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 05:53 5
Цитата Сообщение от Bottyk
"Я тебе один умный вещь скажу, только ты не обижайся..."
1. Ты пытаешься изобрести велосипед.
Подсказывайте готовое решение. Постановка задачи - на atmega8 выделить сигнал в диапазоне 1-2-10-20 КГц из шума, памяти под задачу можно выделит байт 300, блоки по 10-50 мс. Если это велосипед, давайте готовое решение. А задача решаема, DTMF же декодировали на пиках с десяткам байт памяти.

2. Ты пытаешься изобрести велосипед топором и ожидаешь от него невообразимых результатов.
цифровой фильтр - топор? результаты есть, за несколько часов работы кое-какая ачх получена. Уточняю десяток коэффициентов и задача решена.

Для начала надо освоить матлаб. Вместо того чтобы задрачиваться с какими-то непонятными графиками в экселях, можно просто набрать одну функцию в матлабе которая мгновенно выдаст ачх и фчх на любой скормленный ей вектор.
ФЧХ пока что не нужна, АЧХ не выдал только эксель, там сложно организовать итерации, а в дельфях пара строчек.
Целочисленные коэффициенты матлаб подбирает? я уже в дельфях набросал прогу, нашел коэффициенты по минимальной ошибке. На мой взгляд интересное решение.

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

40 тактов на МК это нонсенс. Надо увеличить эту цифру порядков так на несколько. А еще лучше освоить МК заточеные под обработку сигналов.
я же приводил пример, фильтр типа в первом сообщении

Y(i)=X(i) + X(i-10) -X(i-5) + 0.5*X(i-9) + 0.5*X(i-11)

вполне выделяет полезный сигнал, 5 сложений, 2 побитовых сдвига, 7 машинных тактов микроконтроллера?
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,182
20.10.2012, 06:41 6
Определить наличие определенной частоты легче чем построить фильтр. Пик-детектор плюс таймер...но это не фильтр. ДТМФ декодер должен выдать наличие или отсутствие определенной частоты, а цифровой фильтр выдает непрерывный сигнал со срезаными частотами.

Цифровой фильтр это велосипед. Топор это методы подсчета коэф-ов на пальцах.

Матлаб подбирает коэф-ы по желаемому алгоритму, для желаемого типа фильтра. Округлить их до желаемых значений не получится, ибо разница между коэффицентами 1, 0.5 и 0.25 изменит фильтр до неузнаваемости.

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

Засунем фильтр полученый вами в матлаб:
b=[1,0,0,0,-1,0,0,0,0.5,1,0.5];
freqz(b,1)

и получим непонятную хрень


<Изображение удалено>
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
20.10.2012, 13:04 7
если нужен фильтр с определённой характеристикой надо просто взять и перемножить в частотной области спектр сигнала на характеристику фильтра, однако сигнал лежит во временной области и для того чтобы его отфильтровать сначала надо перевести его в частотную преобразованием Фурье, перемножить на характеристику фильтра, и перевести обратно.
Однако даже быстрое преобразование достаточно ресурсоёмкое 20-30 тактов на отсчёт у сигнальных процессоров которые под такие операции заточены, и в несколько раз больше для МК общего назначения.
И чтобы его не делать можно воспользоваться тем фактом что произведение двух сигналов во временной области равносильно свёртке их спектров в частотной, и наоборот.
КИХ фильтр это просто свёртка сигнала с обратным преобразованием от частотной характеристики фильтра:
Y[i] = \sum{K[i-j] * X[i-j]}
поэтому коэффициенты для ФНЧ выглядят как sin(x)/x,
чтобы не считать руками есть специальные программы например QED2OOO. или тот же матлаб.

Y(i)=X(i) + X(i-10) -X(i-5) + 0.5*X(i-9) + 0.5*X(i-11)
подбором такие вещи не делаются. лучше посчитайте чем-нибудь нормально коэффициенты и округлите до степеней двойки.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
20.10.2012, 13:27 8
Цитата Сообщение от _pv
подбором такие вещи не делаются. лучше посчитайте чем-нибудь нормально коэффициенты и округлите до степеней двойки.
В том-то и дело, что округление следует проверять повторным (обратным) расчетом той АЧХ, котораяч реально получается. И тут такое грубое округление (до степеней двойки) наверняка даст каку на выходе.

Меня восхищает смелость, с которой уважаемый коллега sym бросается на очередную амбразуру. Свежо еще в памяти его реизобретение 485-го интерфейса :) Но, откровенно, с фильтрами будет еще хуже. Здесь потоптались много неглупых пацанов, вертевших способы получения требуемых свойств фильтра и так, и сяк. Платили им довольно часто из серьезного военного бюджета, диссертаций и публикаций сделано очень, очень много. Даже научных открытий, реальных достижений, здесь накоплено... ну... горы! Есть смысл это изучать и применять. А потом, уже "обогатив свою память всем тем, что накоплено человечеством" (как говаривал дедушка Ленин), стать коммунистом пробовать предложить новое.
С моей колокольни, например, новое может быть в том, как неподготовленному эмбеддеру попроще спроектировать примитивный усреднятор. Именно спроектировать, а не взять от балды. Об этом я недавно и рассказал в своей заметке. Не более того.

Без обид, дружище sym. Можешь поизучать теорию и предложить свою реализацию. Пока, ИМХО, ты об этом маловато знаешь.
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
20.10.2012, 14:00 9
Я наверно уже пару раз писал на этом форуме замечательную книгу по ЦОС:
Р. Лайонс цифровая обработка сигналов (ст. 192 расчет КИХ фильтра).
Но сейчас дешевле ИМХО освоить матлаб или другую прогу, которая на выходе даст готовый си код. Или воспользоватся онлайн калькулятором описанном в этой статье http://habrahabr.ru/post/148326/. Либо другими программами описанными там же, мне например понравились проги от TI.
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 16:14 10
Цитата Сообщение от Bottyk
Определить наличие определенной частоты легче чем построить фильтр. Пик-детектор плюс таймер...но это не фильтр.
Ничем не легче, определите наличие частоты при уровне сигнал/шум = -120 дб :)

ну или ~0 дб как на рисунке, сигнал и шум примерно равны по амплитуде


<Изображение удалено>

Ваш пик детектор будет работать генератором случайного сигнала. А вот в отфильтрованном сигнале он уже справится, там и думать нечего.

ДТМФ декодер должен выдать наличие или отсутствие определенной частоты, а цифровой фильтр выдает непрерывный сигнал со срезаными частотами.
Определенной частоты при наличии 2х из 3х частот, в коротком интервале около 50 мс, и при наличии шумов конечно же. Задача решаемая, но не так просто, пик детектор не прокатит. Аппаратно в DTMF декодерах достаточно сложные фильтры n-го порядка на переключаемых емкостях и т.п.

Цифровой фильтр это велосипед. Топор это методы подсчета коэф-ов на пальцах.
Пока никто лучше варианта не предложил. Есть очень похожие задачи, но всё не то. Задачу минимизации вычислений при сохранении параметров фильтра кто решил? Из матлаба фильтр выдернуть это слишком просто было бы.

(...удалил как устаревшую информацию)
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,182
20.10.2012, 16:22 11
Не буду спорить, поступайте как считаете нужным.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
20.10.2012, 17:17 12
Цитата Сообщение от drvtos
Цитата Сообщение от _pv
подбором такие вещи не делаются. лучше посчитайте чем-нибудь нормально коэффициенты и округлите до степеней двойки.
В том-то и дело, что округление следует проверять повторным (обратным) расчетом той АЧХ, которая реально получается. И тут такое грубое округление (до степеней двойки) наверняка даст каку на выходе
всё равно всяко лучше получится чем подбирать коэффициенты фильтра от балды.

[QUOTE][QUOTE="Цитата:[/QUOTE]
ДТМФ декодер должен выдать наличие или отсутствие определенной частоты, а цифровой фильтр выдает непрерывный сигнал со срезаными частотами.
Определенной частоты при наличии 2х из 3х частот, в коротком интервале около 50 мс, и при наличии шумов конечно же. Задача решаемая, но не так просто, пик детектор не прокатит. Аппаратно в DTMF декодерах достаточно сложные фильтры n-го порядка на переключаемых емкостях и т.п.
аппаратно в дтмф декодерах делают преобразование Фурье, причем даже не быстрое, а обычное (Герцеля, который суть простейший полосовой фильтр: просто перемножение сигнала на синус заданной частоты) так как это быстрее для нескольких заранее известных частот и затем сравнивают амплитуды гармоник.
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 18:04 13
Цитата Сообщение от Sykmottir
воспользоватся онлайн калькулятором описанном в этой статье http://habrahabr.ru/post/148326/. Либо другими программами описанными там же, мне например понравились проги от TI.
онлайн калькулятор замечательная вещь, при достаточных вычислительных мощностях, в примере из статьи

Код
#defyme NZEROS 1
#defyme NPOLES 1
#defyme GAIN   1.726542528e+00

static ftoot xv[NZEROS+1], yv[NPOLES+1];

static void filterloop()
{ for (;;)
{ xv[0] = xv[1];
xv[1] = next input value / GAIN;
yv[0] = yv[1];
yv[1] =   (xv[1] - xv[0])
+ (  0.1583844403 * yv[0]);
next output value = yv[1];
}
}
Даже думать не надо, вставил код и пользуйся.

Только тут опять же используется и умножение 0.1583844403 * yv[0] причем не целочисленное, а с плавающей запятой, и деление чтоли next input value / GAIN ? Для 8-битных контроллеров может и не подойти.

С другой стороны умножение можно сделать целочисленным:
15838 * yv[0], подразумевая что результат нужно делить на 100000, блок умножения насколько я помню есть даже в самых простых контроллерах типа atmega, оперируя 16-32 битными целыми переменными можно достаточно быстро фильтровать сигналы.
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 18:08 14
Цитата Сообщение от _pv
аппаратно в дтмф декодерах делают преобразование Фурье, причем даже не быстрое, а обычное (Герцеля, который суть простейший полосовой фильтр: просто перемножение сигнала на синус заданной частоты) так как это быстрее для нескольких заранее известных частот и затем сравнивают амплитуды гармоник.
Посмотрел описание, не очень подверждает, но и не опровергает вашу гипотезу

Интегральная схема 1008ВЖ18 является аналогом MT8870 и представляет собой приемник-декодер двухтонального (DTMF) сигнала (код 2 из 8). ИС изготавливается по КМОП технологии и содержит полосовые фильтры на переключаемых конденсаторах. Микросхема контролирует длительности двухтональных посылок и пауз между ними. Выходная информация выводится в виде 4-разрядного двоичного кода. Тактирование микросхемы осуществляется от кварцевого резонатора частотой fC=3,579545 МГц.
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 18:55 15
Цитата Сообщение от drvtos
Цитата Сообщение от _pv
подбором такие вещи не делаются. лучше посчитайте чем-нибудь нормально коэффициенты и округлите до степеней двойки.
В том-то и дело, что округление следует проверять повторным (обратным) расчетом той АЧХ, котораяч реально получается. И тут такое грубое округление (до степеней двойки) наверняка даст каку на выходе.

Что значит кака? Есть некое ТЗ, в которое или укладываемся или нет. Вот пример из статьи на хабрахабре, множитель
0.1583844403 * yv[0]
округляем до
0.15838444 * yv[0]

и что, всё пропало? фильтр работать небудет? :) Еще небольшое округление и влазим в целочисленные 16 битные переменные, это всё лучше чем считать 32-битные числа с плавающей запятой.

а вот округлив до 0.125 уже надо смотреть, удовлетворит фильтр условиям или нет, если удовлетворит считаем числа как деление на 8.

Меня восхищает смелость, с которой уважаемый коллега sym бросается на очередную амбразуру. Свежо еще в памяти его реизобретение 485-го интерфейса :) Но, откровенно, с фильтрами будет еще хуже. Здесь потоптались много неглупых пацанов, вертевших способы получения требуемых свойств фильтра и так, и сяк. Платили им довольно часто из серьезного военного бюджета, диссертаций и публикаций сделано очень, очень много. Даже научных открытий, реальных достижений, здесь накоплено... ну... горы! Есть смысл это изучать и применять. А потом, уже "обогатив свою память всем тем, что накоплено человечеством" (как говаривал дедушка Ленин), стать коммунистом пробовать предложить новое.
Это вы предложили голову устаревшим хламом забивать? :)

С моей колокольни, например, новое может быть в том, как неподготовленному эмбеддеру попроще спроектировать примитивный усреднятор.
Примитивный усреднятор типа
y(i)=0.5*x(i)+0.5*y(i-1)
я использую лет 5 уже
1. Среднее значение температуры воздуха на улице, типа среднесуточной, она же середина графика, нужна чтобы график не зашкаливал, и киповцы поглядывают на эту температуру выставляя уставки на котлах


<Изображение удалено>

2. Среднее время работы и простоя насоса на КНС городской, на нижнем графике коричневая линия


<Изображение удалено>

вот здесь картинка больше (слишком широкая, портит разметку форума)

https://dl.dropbox.som/u/25679385/forum/easy05.png

по этому времени срабатывает одно из многих тревожных событий, и на графике красиво смотрится.

Именно спроектировать, а не взять от балды. Об этом я недавно и рассказал в своей заметке. Не более того.
Много изменится в фильтре если взять коэффициент не 0.5, а 0.50011111? :)

Цитата:
Без обид, дружище sym. Можешь поизучать теорию и предложить свою реализацию. Пока, ИМХО, ты об этом маловато знаешь.
Я предложил реализацию, фильтр в экселевском документе в 5 раз усилил полезный сигнал, не используя операций умножения вообще. На мой взгляд гениально. Другое дело что это специфический фильтр, сегодня можно на микроконтроллерах и 64-битные переменные гонять с плавающей запятой, и быстродействие позволяет и память. И с моей стороны материал изложен ненаглядно, больше иллюстраций нужно было и четче мысли излагать придерживаясь общепринятой терминологии и т.п., а то всё в одну кучу смешал, и преобразование фурье и фильтры :)
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 20:12 16
еще интересная статья и коментарии

http://habrahabr.ru/post/128140/

...Ещё интересный момент связан с конечной точностью вычислений. В частности, если фильтр реализуется в целочисленной арифметике (по очевидным причинам это быстрее и менее затратно по ресурсам на FPGA к примеру), выбор разрядности конечных и промежуточных результатов, метода округления — тоже целая наука. ...
0
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
20.10.2012, 22:04 17
sym, чего-то не пойму... Картинки у вас по две прикрепляются или они все-таки разные? И ссылки тоже. Или у меня в глазах двоится... Подправьте, а то как-то замусорено.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
20.10.2012, 22:16 18
[QUOTE="sym"]Посмотрел описание, не очень подверждает, но и не опровергает вашу гипотезу
[QUOTE="Цитата:[/QUOTE]
Интегральная схема 1008ВЖ18 является аналогом MT8870 и представляет собой приемник-декодер двухтонального (DTMF) сигнала (код 2 из 8). ИС изготавливается по КМОП технологии и содержит полосовые фильтры на переключаемых конденсаторах. Микросхема контролирует длительности двухтональных посылок и пауз между ними. Выходная информация выводится в виде 4-разрядного двоичного кода. Тактирование микросхемы осуществляется от кварцевого резонатора частотой fC=3,579545 МГц.
то что дтмф сигнал можно на любых полосовых фильтрах выделять, включая аналоговые, действительно ничему не противоречит.
не уверен что данные ИС всё еще производятся, особенно вот это вот ВЖ18, а даже если и так, то например, МК MSP430G2131 при стоимости в несколько раз меньше может полностью вместить в себя функциональность данной микросхемы и еще места под много чего другого останется.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
20.10.2012, 22:28 19
Цитата Сообщение от sym
еще интересная статья и коментарии
http://habrahabr.ru/post/128140/
Да, там такой же сангвиник впервые столкнулся с ЦОС и так же восхитился, что это существует :)
На самом деле, ничего в той статье интересного нет, особенно если учесть, что не раскрыто, что это ему дало. Не похоже, что он вообще это применил практически, учитывая полное непонимание (кстати, проявленное и участниками дискуссии) по поводу частоты выходных отсчетов.

Цитата Сообщение от sym
выбор разрядности конечных и промежуточных результатов, метода округления — тоже целая наука. ...
Так это все - наука. А ты продолжаешь ерундить, что изобрел что-то
Цитата Сообщение от sym
На мой взгляд гениально.
В общем, я уже повторяюсь. Хочешь - тешь себя радостными открытиями. Я только хотел, чтобы ты не становился посмешищем... Из уважения к тебе.
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
20.10.2012, 23:12 20
(не по теме)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2012, 23:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Цифровые фильтры (КИХ и БПФ)
Всем привет, На сайте MSDN нашел готовые классы, реализующие фильтры FIR (КИХ) и FFT (БПФ), но...

VBA Excel автофильтр: вместо "фильтры по дате" предлагается "текстовые фильтры"
Доброго времени суток, уважаемые форумчане! Пожалуйста, подскажите решение следующей дилеммы: С...

Цифровые микросхемы
Подскажите какие цифровые мкс с максимальной частотой работы. И какая существует макс. частота?...

Цифровые часы
Здравствуйте, уважаемые форумчане. Требуется помощь в написании небольшой программы. Описание:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.