поделитесь, пожалуйста, информацией где можно найти или самими алгоритмами ЦОС
интересует:
1. полосовой фильтр с перестраиваиваемыми характеристиками
что-нибудь типа
int[] freq = { 200, 1200, 2000 }; центральные частоты
int[] band = { 200, 300, 500 }; полосы
double[] ampl = { 1.0, 0.8, 0.5 }; усиление в полосе
snd[] - массив отсчетов
bandPass( int[] snd, int sampleRate, int[] freq, int[] band, double[] ampl)
а на выходе профильтрованный сигнал
или же, наоборот, многополосный резонатор, вроде, результат должен быть аналогичный.
2. как имея спектр сигнала, полученный с помощью БПФ, восстановить сигнал на заданном промежутке времени?
например, имеется БПФ сигнала, скажем, 16384 отсчета, что при ОБПФ приводит к восстановлению сигнала длительностью 200 мс. а требуется получить, например 1 сек.
насколько я понимаю, после ОБПФ надо в спектре на каждой частоте провернуть фазу, для каждой частоты на свой угол, и снова сделать ОБПФ и так несколько раз. а как это сделать быстро? или есть какой-то другой способ?
3. как просто сгенерировать узкополсный шум?
в книжке нашел, что узкополосный шум описывется формулой
A = A(t)*Sin(wt + fi(t))
где A(t) и fi(t) сигналы, медленно, по сравненению с wt меняющиеся по времени.
а как это реализовать на практике? если, например, в качестве A(t) и fi(t) использовать генераторы случайных сигналов, узкополосности не получится.
WEST128
Aug 20 2007, 16:18
1. Если вам нужен алгоритм синтеза фильтра с заданными характеристиками, то я выдергивал из МатЛаб-а. Его язык, конечно, несколько специфичен, но на С очень даже неплохо переписывается.
2. Нельзя восстановить сигнал на том промежутке, где он не измерялся. Можно только попробовать экстраполировать имеющиеся данные на неизвестный участок. Однако вы получите не сигнал, а его приближение, степень близости которого к реальному сигналу зависит от того, насколько случаен сам сигнал. Чем больше случайная составляющая сигнала, тем больше он будет расходиться с его экстраполяцией. Пример : у нас есть запись голоса человека на протяжении 60 секунд. Надо предсказать сигнал на интервале, скажем, от 80 до 90 с. Если человек не исполнял какой-нибудь шаманский обряд с 2 звуками, то никакой математический алгоритм не сможет вам представить что-нибудь, хоть отдаленно похожее на правду. Однако если сигнал неизменен, например, как сигнал тактовой синхронизации, то можно восстановить его на любом интервале с очень большой точностью. Я предполагаю, проще всего взять спектральные составляющие сигнала да и просуммировать друг с другом.
3. Один из способов генерации узкополосного шума : генерируете широкополосный шум и применяете к нему полосовой фильтр. Решение в лоб, как говориться, не оптимальное, но работающее наверняка. Второй способ следует из разложения формулы S(t) = A(t)*cos(w*t +fi(t)) на квадратурные составляющие. Два генератора случайных чисел пропускаете через ФНЧ, модулируете полученными сигналами два гармонических сигнала( одним - косинус, другим - синус), складываете результаты модуляции. Все.
1. нету матлаба =(
а там есть такие фильтры?
2. это все понятно, что восстановить можно только периодический сигнал. вопрос КАК это сделать. ведь в БПФ существует четкая связь между числом спектральных составляющих и длительностью сигнала при ОБПФ. а меня интерсует увеличить эту длительность.
3. хочется чего попроще. розовый шум тоже можно генерить через логарифмы, а можно и через сложить-вычесть. вот интересуют простые быстрые алгоритмы, пусть и менее точные.
WEST128
Aug 21 2007, 15:20
1. Купить диск с МатЛаб-ом можно где угодно. Или выкачать с интернета. На выбор. А уж фильтры там всякие есть.
2. Грубо - БПФ дает вам разложение определенного сигнала на спектральные составляющие, синусоиды со своими амплитудами и фазами. Так и продолжайте эти синусоиды до бесконечности. Вариант 2 - при смещении времени изменяется только фаза, как dT*2*Pi*F, вот и прибавте этот сдвиг к каждой спектральной составляющей, а дальше проводите ОБПФ.
3. не знаю ничего более простого, чем предложил, увы.
сделал-таки БИХ фильтры. в аттаче - мало-ли кому еще понадобится.
с Фурье так и не разобрался.
дважды шум фильтровать это уж слишком извращенно. тогда уж проще сразу шум через фильтр полосовой попускать. жаль, что сразу так нельзя генерить.
кто-нибудь может дать ссылку или рассказать понятно как сделать КИХ-фильтры?
нашел
http://www.radioscanner.ru/forum/index.php...amp;topic=20557но там, похоже, есть неточности.
кроме того, непонятно, как сделать полосовой фильтр с заданным коэффициентом усиления\ослабления.
интересует расчет коэффициентов по заданным параметрам тип фильтра/частота1/частота2/добротность/коэфф.передачи/аккуратность/тип окна
Цитата(VDV @ Sep 3 2007, 23:08)

кто-нибудь может дать ссылку или рассказать понятно как сделать КИХ-фильтры?
нашел
http://www.radioscanner.ru/forum/index.php...amp;topic=20557но там, похоже, есть неточности.
кроме того, непонятно, как сделать полосовой фильтр с заданным коэффициентом усиления\ослабления.
интересует расчет коэффициентов по заданным параметрам тип фильтра/частота1/частота2/добротность/коэфф.передачи/аккуратность/тип окна
Наберите в командной строке fdatool
blackfin
Sep 4 2007, 00:35
Цитата(VDV @ Sep 3 2007, 23:08)

...
кроме того, непонятно, как сделать полосовой фильтр с заданным коэффициентом усиления\ослабления.
Введение в
filter banks
frag666
Sep 5 2007, 14:18
Есть такая программа FilterSolutions,она умеет делать многое.В проге можно строить разные фильтры(аналоговые,цифровые),можно посмотреть потом АЧХ/ФЧХ.Ну,и для цифровых фильтров может сгенерить исходник на Си,как я уже говорил.
неудобство всех этих программ в том, что они просто дают на выходе уже посчитанные фильтры.
а мне надо самому считать коэффициенты по заданным параметрам.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.