Перейти к содержанию
    

нужны алгоритмы обработки сигналов

поделитесь, пожалуйста, информацией где можно найти или самими алгоритмами ЦОС

интересует:

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) использовать генераторы случайных сигналов, узкополосности не получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Если вам нужен алгоритм синтеза фильтра с заданными характеристиками, то я выдергивал из МатЛаб-а. Его язык, конечно, несколько специфичен, но на С очень даже неплохо переписывается.

2. Нельзя восстановить сигнал на том промежутке, где он не измерялся. Можно только попробовать экстраполировать имеющиеся данные на неизвестный участок. Однако вы получите не сигнал, а его приближение, степень близости которого к реальному сигналу зависит от того, насколько случаен сам сигнал. Чем больше случайная составляющая сигнала, тем больше он будет расходиться с его экстраполяцией. Пример : у нас есть запись голоса человека на протяжении 60 секунд. Надо предсказать сигнал на интервале, скажем, от 80 до 90 с. Если человек не исполнял какой-нибудь шаманский обряд с 2 звуками, то никакой математический алгоритм не сможет вам представить что-нибудь, хоть отдаленно похожее на правду. Однако если сигнал неизменен, например, как сигнал тактовой синхронизации, то можно восстановить его на любом интервале с очень большой точностью. Я предполагаю, проще всего взять спектральные составляющие сигнала да и просуммировать друг с другом.

3. Один из способов генерации узкополосного шума : генерируете широкополосный шум и применяете к нему полосовой фильтр. Решение в лоб, как говориться, не оптимальное, но работающее наверняка. Второй способ следует из разложения формулы S(t) = A(t)*cos(w*t +fi(t)) на квадратурные составляющие. Два генератора случайных чисел пропускаете через ФНЧ, модулируете полученными сигналами два гармонических сигнала( одним - косинус, другим - синус), складываете результаты модуляции. Все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. нету матлаба =(

а там есть такие фильтры?

2. это все понятно, что восстановить можно только периодический сигнал. вопрос КАК это сделать. ведь в БПФ существует четкая связь между числом спектральных составляющих и длительностью сигнала при ОБПФ. а меня интерсует увеличить эту длительность.

3. хочется чего попроще. розовый шум тоже можно генерить через логарифмы, а можно и через сложить-вычесть. вот интересуют простые быстрые алгоритмы, пусть и менее точные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Купить диск с МатЛаб-ом можно где угодно. Или выкачать с интернета. На выбор. А уж фильтры там всякие есть.

2. Грубо - БПФ дает вам разложение определенного сигнала на спектральные составляющие, синусоиды со своими амплитудами и фазами. Так и продолжайте эти синусоиды до бесконечности. Вариант 2 - при смещении времени изменяется только фаза, как dT*2*Pi*F, вот и прибавте этот сдвиг к каждой спектральной составляющей, а дальше проводите ОБПФ.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сделал-таки БИХ фильтры. в аттаче - мало-ли кому еще понадобится.

с Фурье так и не разобрался.

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

IIR.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кто-нибудь может дать ссылку или рассказать понятно как сделать КИХ-фильтры?

нашел http://www.radioscanner.ru/forum/index.php...amp;topic=20557

но там, похоже, есть неточности.

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

интересует расчет коэффициентов по заданным параметрам тип фильтра/частота1/частота2/добротность/коэфф.передачи/аккуратность/тип окна

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кто-нибудь может дать ссылку или рассказать понятно как сделать КИХ-фильтры?

нашел http://www.radioscanner.ru/forum/index.php...amp;topic=20557

но там, похоже, есть неточности.

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

интересует расчет коэффициентов по заданным параметрам тип фильтра/частота1/частота2/добротность/коэфф.передачи/аккуратность/тип окна

Наберите в командной строке fdatool

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

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

Введение в filter banks

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такая программа FilterSolutions,она умеет делать многое.В проге можно строить разные фильтры(аналоговые,цифровые),можно посмотреть потом АЧХ/ФЧХ.Ну,и для цифровых фильтров может сгенерить исходник на Си,как я уже говорил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

неудобство всех этих программ в том, что они просто дают на выходе уже посчитанные фильтры.

а мне надо самому считать коэффициенты по заданным параметрам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...