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

Определение спектра сигнала

Если пишу не втом форуме небейте, лучше посоветуйте куда обратится.

 

Да и сразу хочу предупредить у нас в институте хоть и была математика и ТОЭ и ТЭС и тд., но не знаю смешно это или грешно но все что мы проходили из данной области чрезвычайно поверхностно, у нас даже там по Фурье, БФП не было, так характеристики фильтров и их классификация, так что знаниея здесь нуль, поэтому если можно обьясните на уровне чайника.

 

А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив.

Нужно:

1) Определить основную и побочную гармоники т.е. определить спектр.

2) Сделать программным методом фильтр с настраиваемой характеристикой.

 

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

 

 

P.S. Пишу на Delphi.

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


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

Если Delphi - не догма, то попробуйте Matlab или LabView.

В них есть уже готовый инструментарий для Ваших нужд.

Литературы по ним тоже достаточно, в том числе и на этом форуме.

+ не надо вникать в тонкости реализаций БПФ и прочего....

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


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

Про FFT посмотрите доку во вложении, там есть пример кода, правда на бейсике :) . Это одна из глав книги про DSP. Если интересно могу выложить ее всю на ФТП(6Мб).

 

ПС программа там рабочая, проверено.

Ch12.pdf

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


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

Если пишу не втом форуме небейте, лучше посоветуйте куда обратится.

 

Да и сразу хочу предупредить у нас в институте хоть и была математика и ТОЭ и ТЭС и тд., но не знаю смешно это или грешно но все что мы проходили из данной области чрезвычайно поверхностно, у нас даже там по Фурье, БФП не было, так характеристики фильтров и их классификация, так что знаниея здесь нуль, поэтому если можно обьясните на уровне чайника.

 

А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив.

Нужно:

1) Определить основную и побочную гармоники т.е. определить спектр.

Хм, что есть "побочная гармоника" в Вашем разумении, вторая?

 

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

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


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

Если пишу не втом форуме небейте, лучше посоветуйте куда обратится.

 

Да и сразу хочу предупредить у нас в институте хоть и была математика и ТОЭ и ТЭС и тд., но не знаю смешно это или грешно но все что мы проходили из данной области чрезвычайно поверхностно, у нас даже там по Фурье, БФП не было, так характеристики фильтров и их классификация, так что знаниея здесь нуль, поэтому если можно обьясните на уровне чайника.

 

А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив.

Нужно:

1) Определить основную и побочную гармоники т.е. определить спектр.

2) Сделать программным методом фильтр с настраиваемой характеристикой.

 

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

 

 

P.S. Пишу на Delphi.

 

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

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


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

Начинать нужно с грамотного технического задания. Ибо как все это, что Вы пишЕте, делать - я знаю, но что конкретно Вы имели ВВИДУ - не понял...

Ну да, в КВ-связи только с ней и работали, с побочной гармоникой, имею ввиду.

Он, конечно, знает, но не конкретно. Грамотей, блин.

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


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

otrog выложи пожалуйста книгу.

 

=GM= издеватся многие могут а вот помочь.

 

А вот по по воду ТЗ а что конкретно надо уточнить

сигал оцифровывается внешним АЦП и через UART отправляю на комп и где записываю записываю данные с АЦП в массив, далее нужно найти спектр записанного сигнала.

Вот к примеру промышленный образец http://www.chip-dip.ru/library/DOC000058873.pdf там в самом низу есть рисунок спектроанализатора.

 

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

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


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

=GM= издеватся многие могут а вот помочь.

 

Вы не волнуйтесь, это мой рекламный агент. Без таких товарищей мой ник бледнеет, к нему теряется интерес. Его даже могут забыть...

 

 

 

А вот по по воду ТЗ а что конкретно надо уточнить

сигал оцифровывается внешним АЦП и через UART отправляю на комп и где записываю записываю данные с АЦП в массив, далее нужно найти спектр записанного сигнала.

Вот к примеру промышленный образец http://www.chip-dip.ru/library/DOC000058873.pdf там в самом низу есть рисунок спектроанализатора.

 

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

Вот я поэтому, я и попросил уточнить ТЗ. Чего именно Вам хочется измерить: амплитуду и фазу гармоник или нарисовать сомнительную картинку спектра?

 

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

 

Это скорость передачи полезной информации. Вроде бы :) Во всяком случае, когда я использовал UART, то исходил именно из этого. Дело в том, что 9600 это стандартная модемная скорость, наряду с 2400 и 1200.

А вообще, можно и описание на UART посмотреть. :)

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


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

 

 

=GM= издеватся многие могут а вот помочь.

 

Вы не волнуйтесь, это мой рекламный агент. Без таких товарищей мой ник бледнеет, к нему теряется интерес. Его даже могут забыть...

 

 

 

А вот по по воду ТЗ а что конкретно надо уточнить

сигал оцифровывается внешним АЦП и через UART отправляю на комп и где записываю записываю данные с АЦП в массив, далее нужно найти спектр записанного сигнала.

Вот к примеру промышленный образец http://www.chip-dip.ru/library/DOC000058873.pdf там в самом низу есть рисунок спектроанализатора.

 

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

Вот я поэтому, я и попросил уточнить ТЗ. Чего именно Вам хочется измерить: амплитуду и фазу гармоник или нарисовать сомнительную картинку спектра?

 

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

 

Это скорость передачи полезной информации. Вроде бы :) Во всяком случае, когда я использовал UART, то исходил именно из этого. Дело в том, что 9600 это стандартная модемная скорость, наряду с 2400 и 1200.

А вообще, можно и описание на UART посмотреть. :)

 

9600 - это общая скорость передачи всей информации с учетом служебной. Скорость передачи полезной информации соответственно ниже.

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


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

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)

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

 

Удачи.

(Попутно меня проверяйте, могу накосячить еще как)

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


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

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/

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


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

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

 

А вот по поводу дискретного преобразования Фурье (ДПФ) в принципе это то что нужно для начала. А небудет ли примера без разницы на чем на C C++ Pascale, даже в Matlab (в принцепе тот же С).

Да и если можно источник где можно прочитать поподробней про ДПФ, БФП, FFT или метода Винограда.

на http://dsp-book.narod.ru/books.html есть книги но их там много может какую конкретно посоветуете.

 

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

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


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

а почему вы считаете что прибор по ссылке туфта

 

Это не 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) это так в англоязычной литературе называется БПФ.

 

Алгоритм Виноградова. Хороший, но бесполезный метод. Там очень много условных переходов получается, что не позволило нам получить производительность выше, чем у БПФ. Т.е. на современных процессорах с длинным конвейеером реализовывать его, как мне показалось, не имеет смысла.

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


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

у синуса и косинуса есть дополнительная фаза, равная 1/(2N)

 

Вот, блин. Вроде прочел, что написал, но все равно ошибку допустил. Правильно так:

 

у синуса и косинуса есть дополнительная фаза, равная (2*pi)/(2*N)

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


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

 

9600 - это общая скорость передачи всей информации с учетом служебной. Скорость передачи полезной информации соответственно ниже.

 

Я б не стал на Вашем месте говорить столь уверенно. Может случайно выясниться, что UART это не RS232, а банальный приемопередатчик с FIFO. А скорость у UART может быть... любая. Например 115 кБит. А микросхемы ST3243E и ST3232E дают до 250 Кбит/сек. Я же говорил, что мы применяли UART (так ноги у микросхемы назывались) для передачи модемной информации, в т.ч. и 9600 бод (а не бит/сек). Кстати, многие приборы, использующие этот интерфейс, в паспорте имеют запись именно 9600 бод и не одним бодом меньше. Проверьте сами в Яндексе, если не верите мне.

 

 

 

То есть Вы хотите сказать, что если я поменяю у RS232 с одного стоп-бита на два, то битовая скорость поменяется???. Очевидно, что при этом битовая скорость не поменяется, а "полезная" уменьшится.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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