|
Определение спектра сигнала, Как сделать |
|
|
|
Dec 29 2006, 12:04
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190

|
Если пишу не втом форуме небейте, лучше посоветуйте куда обратится.
Да и сразу хочу предупредить у нас в институте хоть и была математика и ТОЭ и ТЭС и тд., но не знаю смешно это или грешно но все что мы проходили из данной области чрезвычайно поверхностно, у нас даже там по Фурье, БФП не было, так характеристики фильтров и их классификация, так что знаниея здесь нуль, поэтому если можно обьясните на уровне чайника.
А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив. Нужно: 1) Определить основную и побочную гармоники т.е. определить спектр. 2) Сделать программным методом фильтр с настраиваемой характеристикой.
Пожалуйста подскажите с чего начать: книги, ссылке в инэте, примеры, алгоритмы, может кто поделится опытом.
P.S. Пишу на Delphi.
|
|
|
|
|
Dec 29 2006, 14:19
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Про FFT посмотрите доку во вложении, там есть пример кода, правда на бейсике  . Это одна из глав книги про DSP. Если интересно могу выложить ее всю на ФТП(6Мб). ПС программа там рабочая, проверено.
Прикрепленные файлы
Ch12.pdf ( 130.06 килобайт )
Кол-во скачиваний: 256
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
Dec 29 2006, 22:33
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Цитата(impuls-v @ Dec 29 2006, 11:04)  Если пишу не втом форуме небейте, лучше посоветуйте куда обратится.
Да и сразу хочу предупредить у нас в институте хоть и была математика и ТОЭ и ТЭС и тд., но не знаю смешно это или грешно но все что мы проходили из данной области чрезвычайно поверхностно, у нас даже там по Фурье, БФП не было, так характеристики фильтров и их классификация, так что знаниея здесь нуль, поэтому если можно обьясните на уровне чайника.
А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив. Нужно: 1) Определить основную и побочную гармоники т.е. определить спектр. Хм, что есть "побочная гармоника" в Вашем разумении, вторая? Цитата(impuls-v @ Dec 29 2006, 11:04)  2) Сделать программным методом фильтр с настраиваемой характеристикой.
Пожалуйста подскажите с чего начать: книги, ссылке в инэте, примеры, алгоритмы, может кто поделится опытом. P.S. Пишу на Delphi. С какой характеристикой? АЧХ, ФЧХ, импульсной, переходной, групповым временем задержки, а может усилением??? Может требуется адаптивный фильтр? Если все упирается в FFT, то вот не самый плохой ресурс для разных языков http://alglib.sources.ru/fft/fft.php , только будьте внимательны, используется не классическое представление вектора входного/выходного сигнала... Вот Вам книги: http://lord-n.narod.ru/walla.html http://dsp-book.narod.ru/books.html
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Dec 30 2006, 16:25
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
Цитата(impuls-v @ Dec 29 2006, 18:04)  Если пишу не втом форуме небейте, лучше посоветуйте куда обратится.
Да и сразу хочу предупредить у нас в институте хоть и была математика и ТОЭ и ТЭС и тд., но не знаю смешно это или грешно но все что мы проходили из данной области чрезвычайно поверхностно, у нас даже там по Фурье, БФП не было, так характеристики фильтров и их классификация, так что знаниея здесь нуль, поэтому если можно обьясните на уровне чайника.
А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив. Нужно: 1) Определить основную и побочную гармоники т.е. определить спектр. 2) Сделать программным методом фильтр с настраиваемой характеристикой.
Пожалуйста подскажите с чего начать: книги, ссылке в инэте, примеры, алгоритмы, может кто поделится опытом.
P.S. Пишу на Delphi. Начинать нужно с грамотного технического задания. Ибо как все это, что Вы пишите, делать - я знаю, но что конкретно Вы имели в веду - не понял...
|
|
|
|
|
Jan 1 2007, 05:11
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(st256 @ Dec 30 2006, 13:25)  Начинать нужно с грамотного технического задания. Ибо как все это, что Вы пишЕте, делать - я знаю, но что конкретно Вы имели ВВИДУ - не понял... Ну да, в КВ-связи только с ней и работали, с побочной гармоникой, имею ввиду. Он, конечно, знает, но не конкретно. Грамотей, блин.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jan 5 2007, 03:58
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190

|
otrog выложи пожалуйста книгу. =GM= издеватся многие могут а вот помочь. А вот по по воду ТЗ а что конкретно надо уточнить сигал оцифровывается внешним АЦП и через UART отправляю на комп и где записываю записываю данные с АЦП в массив, далее нужно найти спектр записанного сигнала. Вот к примеру промышленный образец http://www.chip-dip.ru/library/DOC000058873.pdf там в самом низу есть рисунок спектроанализатора. ДА и еще раньше не задовался таким вопросом - скорость UART к примеру 9600 это скорость полезной инфомации или с учетом служебной (старт, стоп биты, паритет).
|
|
|
|
|
Jan 5 2007, 09:05
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
Цитата(impuls-v @ Jan 5 2007, 09:58)  =GM= издеватся многие могут а вот помочь. Вы не волнуйтесь, это мой рекламный агент. Без таких товарищей мой ник бледнеет, к нему теряется интерес. Его даже могут забыть... Цитата(impuls-v @ Jan 5 2007, 09:58)  А вот по по воду ТЗ а что конкретно надо уточнить сигал оцифровывается внешним АЦП и через UART отправляю на комп и где записываю записываю данные с АЦП в массив, далее нужно найти спектр записанного сигнала. Вот к примеру промышленный образец http://www.chip-dip.ru/library/DOC000058873.pdf там в самом низу есть рисунок спектроанализатора. Знаете, я достаточно давно занимаюсь измерениями спектра и должен признать, что все меньше и меньше понимаю, как его измерять. Во-всяком случае, то, что показывает прибор с Вашей ссылки - скорее всего туфта. Другое дело, если Вы хотите найти значение гармоник какого-либо периодического сигнала - тогда задача вполне решаема. Во-всяком случае, я такие задачи легко решаю. Вот я поэтому, я и попросил уточнить ТЗ. Чего именно Вам хочется измерить: амплитуду и фазу гармоник или нарисовать сомнительную картинку спектра? Цитата(impuls-v @ Jan 5 2007, 09:58)  ДА и еще раньше не задовался таким вопросом - скорость UART к примеру 9600 это скорость полезной инфомации или с учетом служебной (старт, стоп биты, паритет). Это скорость передачи полезной информации. Вроде бы  Во всяком случае, когда я использовал UART, то исходил именно из этого. Дело в том, что 9600 это стандартная модемная скорость, наряду с 2400 и 1200. А вообще, можно и описание на UART посмотреть.
|
|
|
|
|
Jan 5 2007, 09:25
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 19-12-06
Из: Silicon Valley, California
Пользователь №: 23 683

|
Цитата(st256 @ Jan 5 2007, 09:05)  Цитата(impuls-v @ Jan 5 2007, 09:58) 
=GM= издеватся многие могут а вот помочь.
Вы не волнуйтесь, это мой рекламный агент. Без таких товарищей мой ник бледнеет, к нему теряется интерес. Его даже могут забыть... Цитата(impuls-v @ Jan 5 2007, 09:58)  А вот по по воду ТЗ а что конкретно надо уточнить сигал оцифровывается внешним АЦП и через UART отправляю на комп и где записываю записываю данные с АЦП в массив, далее нужно найти спектр записанного сигнала. Вот к примеру промышленный образец http://www.chip-dip.ru/library/DOC000058873.pdf там в самом низу есть рисунок спектроанализатора. Знаете, я достаточно давно занимаюсь измерениями спектра и должен признать, что все меньше и меньше понимаю, как его измерять. Во-всяком случае, то, что показывает прибор с Вашей ссылки - скорее всего туфта. Другое дело, если Вы хотите найти значение гармоник какого-либо периодического сигнала - тогда задача вполне решаема. Во-всяком случае, я такие задачи легко решаю. Вот я поэтому, я и попросил уточнить ТЗ. Чего именно Вам хочется измерить: амплитуду и фазу гармоник или нарисовать сомнительную картинку спектра? Цитата(impuls-v @ Jan 5 2007, 09:58)  ДА и еще раньше не задовался таким вопросом - скорость UART к примеру 9600 это скорость полезной инфомации или с учетом служебной (старт, стоп биты, паритет). Это скорость передачи полезной информации. Вроде бы  Во всяком случае, когда я использовал UART, то исходил именно из этого. Дело в том, что 9600 это стандартная модемная скорость, наряду с 2400 и 1200. А вообще, можно и описание на UART посмотреть.  9600 - это общая скорость передачи всей информации с учетом служебной. Скорость передачи полезной информации соответственно ниже.
|
|
|
|
|
Jan 5 2007, 16:21
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
impuls-v "=GM= издеваться многие могут, а вот помочь"
Вообще-то я хотел не над нашим уважаемым поиздеваться, а ВАС, новичка, предостеречь от его советов. Это на полном серьёзе. Я тут вовсе не агентом работаю (как кому-то хотелось бы), а санитаром на четверть ставки(:-), чищу авгиевы конюшни(:-).
Наш уважаемый мнит себя знатоком много чего, иногда даже не понимая, о чём он толкует. Далеко ходить за примерами не надо, он сам их предоставляет в достаточном количестве, да вот прямо в вашем посте.
Вот вы спрашиваете: «Да и еще, раньше не задавался таким вопросом - скорость UART, к примеру 9600, это скорость полезной инфомации или с учетом служебной (старт, стоп биты, паритет)»
Наш уважаемый отвечает: «Это скорость передачи полезной информации. Вроде бы Во всяком случае, когда я использовал UART, то исходил именно из этого. Дело в том, что 9600 это стандартная модемная скорость, наряду с 2400 и 1200».
Спрашивается, ну зачем отвечать, если не знаешь, да еще приплетать сюда другие скорости? Так нет, отвечает, причем с точностью до наоборот. Как он еще Финка не приплёл, уму непостижимо!
Вам ниже Cupertino правильно ответил, что «9600 - это общая скорость передачи всей информации с учетом служебной. Скорость передачи полезной информации соответственно ниже». Добавлю, что один бит по rs232 на скорости 9600 бит/с передается 1/9600=1,0416666Е-4 с=104,166 мкс. Привыкайте к размерностям, раз хотите работать со спектром(:-)
Теперь по делу.
1) До меня вам уже ответили коллеги be, otrog и druid3, и в принципе этого достаточно для начала.
2) Раз вы просите помочь, чтож скажу еще несколько слов. Если вы хотите считать спектр не на микроконтроллере или DSP, а на большом компьютере, да еще на Делфи, то возможно вам стоит начать просто с дискретного преобразования Фурье (ДПФ). Если достаточно освоите его, можете затем перейти к другим методам расчета спектра, более быстрым, типа FFT или метода Винограда. (Замечу в скобках, что все они основаны на ДПФ, это основа). Там все просто, как правда.
- вычисляете два массива коэффициентов для всех k от 0 до N-1 a(k)=sum(x(i)*cos(2*pi*Fs*i*k/N)), сумма по i от 0 до N-1 b(k)=sum(x(i)*sin(2*pi*Fs*i*k/N)), сумма по i от 0 до N-1
Здесь x(i) – массив выборок внешнего сигнала, pi=3.14159265359 (по памяти, проверьте), Fs – частота выборки, N – размер выборок, в данном случае может быть любым целым положительным числом, скажем, 4096.
- вычисляете модуль спектра c(k)=sqrt((a(k)^2)+b(k)^2) - нормируете и рисуете ваш спектр на экране любым доступным вам способом.
Удачи. (Попутно меня проверяйте, могу накосячить еще как)
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jan 5 2007, 18:52
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
Цитата(cupertino @ Jan 5 2007, 15:25)  9600 - это общая скорость передачи всей информации с учетом служебной. Скорость передачи полезной информации соответственно ниже. Я б не стал на Вашем месте говорить столь уверенно. Может случайно выясниться, что UART это не RS232, а банальный приемопередатчик с FIFO. А скорость у UART может быть... любая. Например 115 кБит. А микросхемы ST3243E и ST3232E дают до 250 Кбит/сек. Я же говорил, что мы применяли UART (так ноги у микросхемы назывались) для передачи модемной информации, в т.ч. и 9600 бод (а не бит/сек). Кстати, многие приборы, использующие этот интерфейс, в паспорте имеют запись именно 9600 бод и не одним бодом меньше. Проверьте сами в Яндексе, если не верите мне. И если я рекомендовал человеку посмотреть описание его UARTа, то имелось ввиду именно отсутствие строго подхода в плане выбора скоростей для этого интерфейса. Вообще, я б Вам рекомендовал прочесть про UART тут http://www.krinc.rnd.runnet.ru/FreeBSD/doc...es/serial-uart/
|
|
|
|
|
Jan 7 2007, 04:03
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190

|
уважаемый =GM= извините если тот выпад мог показаться грубым, просто когда писал тот топик меня немного обидели ну я и несдержался, ведь если ты новичок и немного не грамотно задал вопрос, на то его и задаеш чтобы стать грамотным, то довольно часто тебя либо стараются отфутболить или молчат как партизаны, нет указать на ошибку. А вот по поводу дискретного преобразования Фурье (ДПФ) в принципе это то что нужно для начала. А небудет ли примера без разницы на чем на C C++ Pascale, даже в Matlab (в принцепе тот же С). Да и если можно источник где можно прочитать поподробней про ДПФ, БФП, FFT или метода Винограда. на http://dsp-book.narod.ru/books.html есть книги но их там много может какую конкретно посоветуете. а почему вы считаете что прибор по ссылке туфта, мне в свое время, когда я еще учился в училище на телемастера, такой прибор просто спас мою сессию, когда были уже все активные элементы поменяны сняты карты напряжений, АЧХ и др. когда даже препод разводил руками и ничего не работает, только подобный прибор помог определить где была неисправность, а было это керамический конденсатор причем по схеме он недолжен был влиять на работу того узла который был сломан.
|
|
|
|
|
Jan 7 2007, 10:55
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
Цитата(impuls-v @ Jan 7 2007, 10:03)  а почему вы считаете что прибор по ссылке туфта Это не General Motors считает, это st256 считает. Мосье Дженераль, к сожалению, имеет очень слабую подготовку в области ЦОС, потому все его утверждения весьма поверхностны и практического смысла не имеют. Кстати, они не будут иметь практического смысла и в будущем, ибо этот господин вместо прилежного изучения основ, тратит свои силы на излитие желчи, брызганье слюной и т.п. В отличие от благородного сибирского джентльмена st256... Теперь почему я считаю, что прибор по ссылке туфта. Ну для начала, все приборы измеряющие непрерывный спектр в некотором смысле туфта. Если грубо, то выглядит это примерно так: Представьте, что Вы хотите посмотреть спектр следующего сигнала: сумма белого шума со спектральной плотностью 1 и синусоиды с амплитудой тоже равной 1. И что должен показать анализатор спектра? А должен он показать превышение сигнала над шумом в ... БЕСКОНЕЧНОСТЬ РАЗ! А что он покажет? То-то же... Кстати, а что по-Вашему показывает указанный прибор вместо спектрального пика? Вы думаете, что форма пика имеет хоть какое-то отношение к реальному пику? Увы, никакого отношения к реальности она не имеет. Этот пик представляет собой лишь спектр накладываемого на сигнал окна перед ДПФ. Т.е. все пики будут иметь ОДИНАКОВУЮ форму. Цитата мне в свое время, когда я еще учился в училище на телемастера, такой прибор просто спас мою сессию, когда были уже все активные элементы поменяны сняты карты напряжений, АЧХ и др. когда даже препод разводил руками и ничего не работает, только подобный прибор помог определить где была неисправность, а было это керамический конденсатор причем по схеме он недолжен был влиять на работу того узла который был сломан. Телемастеру такой прибор, действительно, облегчает жизнь. А вот DSP-инженеру, он нафиг не нужен. Представляете, за последние несколько лет я осциллографом-то пользовался отсилы пару недель только. Почему? Ну будете изучать профессию дальше - поймете. А пока примите как данность: програмный продукт проверяется ТОЛЬКО програмным продуктом. Цитата Да и если можно источник где можно прочитать поподробней про ДПФ, БФП, FFT или метода Винограда. ДПФ. Золотой стандарт для изучения основ цифровой обработки сигнала это Рабинер и Голд Теория и практика цифровой обработки сигналовНедавно мне выслали учебник, по которому обучают народ в Физтехе: Ю.А.Романюк, Основы цифровой обработки сигналов. Если сможете его достать, то рекомендую его в первую очередь. Кстати, мосье Дженераль Вам неправильно описал ДПФ. Он допустил стандартную ошибку для тех, кто никогда не занимался спектральным анализом. Цитата вычисляете два массива коэффициентов для всех k от 0 до N-1 a(k)=sum(x(i)*cos(2*pi*Fs*i*k/N)), сумма по i от 0 до N-1 b(k)=sum(x(i)*sin(2*pi*Fs*i*k/N)), сумма по i от 0 до N-1 Во-первых, i должно изметься не от 0 до N-1 а от -N/2 до N/2-1. Но это как раз ерунда. Главное, что... это... ох, даже не знаю как сказать... собираюсь духом... собрался... еще раз собрался... все говорю... что у синуса и косинуса есть дополнительная фаза, равная 1/(2N) !!! А сделаете так, как говорит мосье Дженераль Моторс - получите перекошенную фазу у обмеряемых гармоник. Эта ошибка, кстати, имеет место быть даже в Матлабе. И скольким людям она попортила жизнь... БПФ это алгоритм вычисления ДПФ. Существует способ значительно сократить вычисления по сравнению с описаным выше алгоритмом. Вот это и называют Быстрым Преобразованием Фурье (БПФ). FFT (Fast Fourier Transform) это так в англоязычной литературе называется БПФ. Алгоритм Виноградова. Хороший, но бесполезный метод. Там очень много условных переходов получается, что не позволило нам получить производительность выше, чем у БПФ. Т.е. на современных процессорах с длинным конвейеером реализовывать его, как мне показалось, не имеет смысла.
|
|
|
|
|
Jan 7 2007, 13:52
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
Цитата(st256 @ Jan 7 2007, 16:55)  у синуса и косинуса есть дополнительная фаза, равная 1/(2N) Вот, блин. Вроде прочел, что написал, но все равно ошибку допустил. Правильно так: у синуса и косинуса есть дополнительная фаза, равная (2*pi)/(2*N)
|
|
|
|
|
Jan 7 2007, 16:31
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(st256 @ Jan 5 2007, 18:52)  Цитата(cupertino @ Jan 5 2007, 15:25) 
9600 - это общая скорость передачи всей информации с учетом служебной. Скорость передачи полезной информации соответственно ниже.
Я б не стал на Вашем месте говорить столь уверенно. Может случайно выясниться, что UART это не RS232, а банальный приемопередатчик с FIFO. А скорость у UART может быть... любая. Например 115 кБит. А микросхемы ST3243E и ST3232E дают до 250 Кбит/сек. Я же говорил, что мы применяли UART (так ноги у микросхемы назывались) для передачи модемной информации, в т.ч. и 9600 бод (а не бит/сек). Кстати, многие приборы, использующие этот интерфейс, в паспорте имеют запись именно 9600 бод и не одним бодом меньше. Проверьте сами в Яндексе, если не верите мне. То есть Вы хотите сказать, что если я поменяю у RS232 с одного стоп-бита на два, то битовая скорость поменяется???. Очевидно, что при этом битовая скорость не поменяется, а "полезная" уменьшится.
|
|
|
|
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0
|
|
|