Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

Подавление частоты.   Найти похожие ветки 

 
DesWind ©   (2006-11-08 15:19) [0]

Есть оцифрованый сигнал. Надо подавить определенную частоту и ее гармоники, что посоветуете?


 
Сергей М. ©   (2006-11-08 15:23) [1]

Фурье-преобразования, что ж еще ...


 
DesWind ©   (2006-11-08 15:36) [2]

Типа туда, вырезать, а потом обратно?.. Хм... Мож че попроще фильтры какие нить... А то даж не знаю че спросить у яндекса ).


 
Ketmar ©   (2006-11-08 15:39) [3]

а фильтры -- это тоже Фурье. всё на свете Фурье. %-)


 
Ketmar ©   (2006-11-08 15:46) [4]

кстати, ввёл в гугль "цифровые фильтры". кучу интересного вернуло. вот это, например: http://ru.wikipedia.org/wiki/Цифровой_фильтр


 
Jeer ©   (2006-11-08 16:11) [5]


> DesWind ©   (08.11.06 15:19)
>
> Есть оцифрованый сигнал. Надо подавить определенную частоту
> и ее гармоники, что посоветуете?


Гребенчатый фильтр.


 
Jeer ©   (2006-11-08 16:12) [6]


> Сергей М. ©   (08.11.06 15:23) [1]
>
> Фурье-преобразования, что ж еще ...


В общем случае - слишком накладно.


 
Сергей М. ©   (2006-11-08 16:12) [7]


> Jeer ©   (08.11.06 16:11) [5]


> Гребенчатый фильтр.


Альтернатива Фурье ?


 
Jeer ©   (2006-11-08 16:18) [8]

Да нет, почему же.
"Обычный" нерекурсивный, построенный по определенным правилам.
Давит кратные частоты.
Достаточно хорошо развита теория и практика конструирования.
Использовались (ся) в фильтрах подавления сетевых помех, в АЦП, в частности.


 
Сергей М. ©   (2006-11-08 16:24) [9]


> Давит кратные частоты


Серега, автор не ассоциировал "гармоники" с "кратными частотами"..

Хрен знает, что он под "гармониками" подразумевал)


 
Jeer ©   (2006-11-08 16:29) [10]

Вероятно, как и все - в основном это частоты, кратные основной.
Например, есть 50 Гц. частота на перазитном входе (питание, эфир, емкостная связь и пр.)
Проходя всякие нелинейности, в том числе и выпрямитель, возникают и лезут дальше гармоники, кратные 50.
Нужно их давить.
Если брать за источник гармоник обычный сетевой двухполупериодный выпрямитель, то там основная паразитная частота - 100 Hz


 
Jeer ©   (2006-11-08 16:30) [11]

Если не вдаваться в теорию интермодуляции, конечно:)))


 
Сергей М. ©   (2006-11-08 16:37) [12]


> Jeer ©   (08.11.06 16:29) [10]


ну ежели так, то согласен - сойдет и "гребенка")


 
MBo ©   (2006-11-08 16:56) [13]


var
 N, i: Integer;
 A: array of Double;
 Mul, ReSum, ImSum, RejF, MRF: Double;
begin
 N := 44100;
 SetLength(A, N); // 1 секунда оцифровки с частотой 44100
 Mul := 2 * Pi / N;

 for i := 0 to N - 1 do begin
   A[i] := 2 * Sin(Mul * i * 2) + Sin(Mul * i * 13);// смесь частот 2 и 13 Гц, низкие  - для наглядности графиков
   Series1.Add(A[i]);
 end;

 RejF := 2; // частота режекторного фильтра
 MRF := RejF * Mul;

 ReSum := 0;
 ImSum := 0;
 for i := 0 to N - 1 do begin
   ReSum := ReSum + A[i] * cos(MRF * i);
   ImSum := ImSum + A[i] * sin(MRF * i);
 end;
 ReSum := ReSum * 2 / N;
 ImSum := ImSum * 2 / N;

 for i := 0 to N - 1 do begin
   A[i] := A[i] - ReSum * Cos(MRF * i) - ImSum * Sin(MRF * i);
   Series2.Add(A[i]);
 end;


 
MBo ©   (2006-11-08 16:59) [14]

Пардон, про гармоники не углядел...


 
Jeer ©   (2006-11-08 17:42) [15]

Можно так, на CIC-фильтрах:
Это комбинация интеграторов и дифференциаторов с цель получения решетчатой структуры АЧХ.

http://users.snip.net/~donadio/cic.pdf
http://www.xilinx.com/ipcenter/catalog/logicore/docs/cic.pdf


 
DesWind ©   (2006-11-08 19:35) [16]

Спасибо. Будем эксперементировать.


 
Jeer ©   (2006-11-09 09:59) [17]

DesWind ©   (08.11.06 19:35) [16]

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


 
DesWind ©   (2006-11-09 11:15) [18]


> Jeer ©   (09.11.06 09:59) [17]

Ну покрайней мере теперь знаю с чего начинать. )


 
Jeer ©   (2006-11-09 11:32) [19]

DesWind ©   (09.11.06 11:15) [18]

Опиши предметную область - будут более конкретные советы и помощь.


 
DesWind ©   (2006-11-09 14:45) [20]

Я лучше покажу http://www.webfile.ru/1184709 (GIF 13 кб). Помеха по характеру постоянна, и на длительном промежутке постоянна по частоте. Но частота может всеравно меняться. т.е. в программе должна быть "крутилка" для подстройки фильтра....


 
DesWind ©   (2006-11-09 14:51) [21]

Забыл добавить частота квантования 50 Гц, фильтрация в реальном времени.


 
Jeer ©   (2006-11-09 15:38) [22]

Сигнал вида уровнем 0/1 - это понятно.

Что является полезной информацией в сигнале:
- интервал между импульсами
- длительность импульсов
- число импульсов
- ?

Лучше выкладывать оцифровку в plaintext или wav, чтобы можно было определять количественные параметры сигнала.

Что является прикладной задачей, так и непонятно.
Восстановление формы логического сигнала ?
Вряд ли - см. выше о "полезности" сигнала.

Т.е. если сигнал является кодовым, то, в соответствии с принципами кодирования, строится декодер + подавитель помех.

Навскидку, для данного случая вполне достаточно примитивного ФНЧ (фильтр нижних частот) + компаратор уровня.


 
Jeer ©   (2006-11-09 15:51) [23]

http://www.webfile.ru/1184804

зеленый - зашумленный полезный сигнал
синий - сигнал после фильтрации
красный - после компаратора (смещен вверх для наглядности)


 
DesWind ©   (2006-11-09 17:27) [24]

Это позиционно-зависимый код. А как реализовать такой фильтр который на картинке? )


 
Jeer ©   (2006-11-09 17:53) [25]

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

Рекурсивный фильтр 2-го порядка получаемый из звена второго порядка H(s) = Wa/(s^2+Wa^2) методом билинейного Z-преобразования
s= (2/T)*(1-Z^(-1))/(1+Z^(-1))
в виде разностного уравнения  выглядит так:

y(i) = G*x(i)+b1*y(i-1)+b2*y(i-2)

где
T - период дискретизации
a = R/(2*L)
Wc = ((1/(L*C))-(R/(2*L)^2))^0.5
b1 = 2*exp(-a*T)*Cos(Wc*T)
b2 = -exp(-2*a*T)
G = (1/Wc)*(a/(L*C))*exp(-a*T)*Sin(Wc*T)
R,L,C - параметры контура (можно перейти от R к добротности)

Нерекурсивный фильтр еще проще:))
Это взвешенная сумма отсчетов

y(i) = sum (a(i)*x(i))
i = 0..N-1

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

Хемминг:
w(i) = 0.54 + 0.46*Cos(2*PI*i/(N-1))


 
DesWind ©   (2006-11-10 14:17) [26]

Большое спасибо за помощь!!!! Усе арбайтен!


 
Jeer ©   (2006-11-10 15:23) [27]

Ок.
Арбайтен - так арбайтен.

Но учти, инженер начинается с чистого листа бумаги и карандаша.
Когда к этому привыкнешь - пойдет все остальное.

Чего за девайс-то ?
На самом деле, я бы прикрутил аппаратный ФНЧ + компаратор на одном сдвоенном операционнике - делов. Декодирование - на тачке.


 
DesWind ©   (2006-11-11 05:42) [28]

Тяжело объяснить... Секрет не сектрет, но... Поставили задачу, обойтись минимальными средствами. "Декодирование на тачке" уже есть.


 
DesWind ©   (2006-11-11 05:46) [29]

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


 
DesWind ©   (2006-11-11 06:08) [30]


> Но учти, инженер начинается с чистого листа бумаги и карандаша.
> Когда к этому привыкнешь - пойдет все остальное.

не знаю что где начинается, но три листа чесно исписал


 
Jeer ©   (2006-11-13 17:55) [31]

DesWind ©   (11.11.06 05:46) [29]

Если еще интересует - лучшие результаты будут получены при использовании не очень избирательного, но "гладкого" фильтра Бесселя.

Судя по твоим "относительным" параметрам сигнала и помех - рекомендую рекурсивный НЧ-фильтр Бесселя 7-го порядка.

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

Смещение (запаздывание) восстановленного сигнала от исходного не принципиально, т.к. сохраняется пропорциональность на всей наблюдаемой временной области.

см. результат:
http://www.webfile.ru/1190202



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.045 c
2-1185099170
Владимир Макарович
2007-07-22 14:12
2007.08.19
Вопросы по программированию


15-1184697721
Mike Kouzmine
2007-07-17 22:42
2007.08.19
fdisk - integer error div 0


2-1185277127
kyro
2007-07-24 15:38
2007.08.19
Как сделать сортировку


2-1185371182
AlexanderMS
2007-07-25 17:46
2007.08.19
Система координат в OpenGL.


2-1184961179
San17
2007-07-20 23:52
2007.08.19
Как записать в файл если он открыт как THandle ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский