реклама на сайте
подробности

 
 
34 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Определение спектра сигнала, Как сделать
impuls-v
сообщение Dec 29 2006, 12:04
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190



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

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

А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив.
Нужно:
1) Определить основную и побочную гармоники т.е. определить спектр.
2) Сделать программным методом фильтр с настраиваемой характеристикой.

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


P.S. Пишу на Delphi.
Go to the top of the page
 
+Quote Post
bve
сообщение Dec 29 2006, 12:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765



Если Delphi - не догма, то попробуйте Matlab или LabView.
В них есть уже готовый инструментарий для Ваших нужд.
Литературы по ним тоже достаточно, в том числе и на этом форуме.
+ не надо вникать в тонкости реализаций БПФ и прочего....
Go to the top of the page
 
+Quote Post
otrog
сообщение Dec 29 2006, 14:19
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



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

ПС программа там рабочая, проверено.
Прикрепленные файлы
Прикрепленный файл  Ch12.pdf ( 130.06 килобайт ) Кол-во скачиваний: 256
 


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Dec 29 2006, 22:33
Сообщение #4


山伏
*****

Группа: Свой
Сообщений: 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


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
st256
сообщение Dec 30 2006, 16:25
Сообщение #5


СТАТУС: только для чтения
**

Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627



Цитата(impuls-v @ Dec 29 2006, 18:04) *
Если пишу не втом форуме небейте, лучше посоветуйте куда обратится.

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

А нужно сделать следующее: сигал оцифровывается АЦП и через UART получаю на комп и записываю его в массив.
Нужно:
1) Определить основную и побочную гармоники т.е. определить спектр.
2) Сделать программным методом фильтр с настраиваемой характеристикой.

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


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


Начинать нужно с грамотного технического задания. Ибо как все это, что Вы пишите, делать - я знаю, но что конкретно Вы имели в веду - не понял...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 1 2007, 05:11
Сообщение #6


Ambidexter
*****

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



Цитата(st256 @ Dec 30 2006, 13:25) *
Начинать нужно с грамотного технического задания. Ибо как все это, что Вы пишЕте, делать - я знаю, но что конкретно Вы имели ВВИДУ - не понял...

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


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
impuls-v
сообщение Jan 5 2007, 03:58
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190



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

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

А вот по по воду ТЗ а что конкретно надо уточнить
сигал оцифровывается внешним АЦП и через UART отправляю на комп и где записываю записываю данные с АЦП в массив, далее нужно найти спектр записанного сигнала.
Вот к примеру промышленный образец http://www.chip-dip.ru/library/DOC000058873.pdf там в самом низу есть рисунок спектроанализатора.

ДА и еще раньше не задовался таким вопросом - скорость UART к примеру 9600 это скорость полезной инфомации или с учетом служебной (старт, стоп биты, паритет).
Go to the top of the page
 
+Quote Post
st256
сообщение Jan 5 2007, 09:05
Сообщение #8


СТАТУС: только для чтения
**

Группа: Новичок
Сообщений: 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 это скорость полезной инфомации или с учетом служебной (старт, стоп биты, паритет).


Это скорость передачи полезной информации. Вроде бы smile.gif Во всяком случае, когда я использовал UART, то исходил именно из этого. Дело в том, что 9600 это стандартная модемная скорость, наряду с 2400 и 1200.
А вообще, можно и описание на UART посмотреть. smile.gif
Go to the top of the page
 
+Quote Post
cupertino
сообщение Jan 5 2007, 09:25
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 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 это скорость полезной инфомации или с учетом служебной (старт, стоп биты, паритет).


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


9600 - это общая скорость передачи всей информации с учетом служебной. Скорость передачи полезной информации соответственно ниже.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 5 2007, 16:21
Сообщение #10


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)
- нормируете и рисуете ваш спектр на экране любым доступным вам способом.

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


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
st256
сообщение Jan 5 2007, 18:52
Сообщение #11


СТАТУС: только для чтения
**

Группа: Новичок
Сообщений: 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/
Go to the top of the page
 
+Quote Post
impuls-v
сообщение Jan 7 2007, 04:03
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190



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

А вот по поводу дискретного преобразования Фурье (ДПФ) в принципе это то что нужно для начала. А небудет ли примера без разницы на чем на C C++ Pascale, даже в Matlab (в принцепе тот же С).
Да и если можно источник где можно прочитать поподробней про ДПФ, БФП, FFT или метода Винограда.
на http://dsp-book.narod.ru/books.html есть книги но их там много может какую конкретно посоветуете.

а почему вы считаете что прибор по ссылке туфта, мне в свое время, когда я еще учился в училище на телемастера, такой прибор просто спас мою сессию, когда были уже все активные элементы поменяны сняты карты напряжений, АЧХ и др. когда даже препод разводил руками и ничего не работает, только подобный прибор помог определить где была неисправность, а было это керамический конденсатор причем по схеме он недолжен был влиять на работу того узла который был сломан.
Go to the top of the page
 
+Quote Post
st256
сообщение Jan 7 2007, 10:55
Сообщение #13


СТАТУС: только для чтения
**

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

Алгоритм Виноградова. Хороший, но бесполезный метод. Там очень много условных переходов получается, что не позволило нам получить производительность выше, чем у БПФ. Т.е. на современных процессорах с длинным конвейеером реализовывать его, как мне показалось, не имеет смысла.
Go to the top of the page
 
+Quote Post
st256
сообщение Jan 7 2007, 13:52
Сообщение #14


СТАТУС: только для чтения
**

Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627



Цитата(st256 @ Jan 7 2007, 16:55) *
у синуса и косинуса есть дополнительная фаза, равная 1/(2N)


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

у синуса и косинуса есть дополнительная фаза, равная (2*pi)/(2*N)
Go to the top of the page
 
+Quote Post
vvs157
сообщение Jan 7 2007, 16:31
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 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 с одного стоп-бита на два, то битовая скорость поменяется???. Очевидно, что при этом битовая скорость не поменяется, а "полезная" уменьшится.
Go to the top of the page
 
+Quote Post

34 страниц V   1 2 3 > » 
Reply to this topicStart new topic
9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016