Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Простой анализ спектра простого сигнала
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Punk
Здравствуйте мегаматематики. Попросили(добровольно-принудительно) меня в технаре написать програмку на камп чтобы строила 2 графика гармонических функций а ниже нарисовала спектр сигнала, являющегося суммой этих двух гармоник.
Синус с косинусом нарисовать и результирующий сигнал найти непроблема, а вот спектр мозгов не хватает, ПОМОЖИТЕ ЛЮДИ ДОБРЫЕ !!! Препод понимает C, Pascal, qBasic объектноориентированное непонимает.Заранее спасибо за любую инфу
SM
Цитата(Punk @ Dec 22 2006, 15:31) *
Здравствуйте мегаматематики. Попросили(добровольно-принудительно) меня в технаре написать програмку на камп чтобы строила 2 графика гармонических функций а ниже нарисовала спектр сигнала, являющегося суммой этих двух гармоник.
Синус с косинусом нарисовать и результирующий сигнал найти непроблема, а вот спектр мозгов не хватает, ПОМОЖИТЕ ЛЮДИ ДОБРЫЕ !!! Препод понимает C, Pascal, qBasic объектноориентированное непонимает.Заранее спасибо за любую инфу


А что там рисовать-то? Две палки аккурат на частотах этих гармоник. И еще две зеркально на отрицательных частотах. Ведь спектр синуса, как и косинуса это есть пара дельта-функций в плюсе и в минусе.
Pavel MAR
если нужно разложить любой сигнал в спектр, то делаем следующее: берется функция входного сигнала, определяется ее период и раскладывается на компоненты ряда Фурье, затем берется среднее геометрическое a(n) и b(n), и строится спектрограмма - зависимость энергии гармоники, от ее номера n.
Stanislav
Цитата(Punk @ Dec 22 2006, 15:31) *
Препод понимает C, Pascal, qBasic объектноориентированное непонимает.
А Матлаб понимает? Прогга на нём покороче будет.
Например:
Код
A=(sin(.25*[1:1000])+sin(.1*[1:1000]));
plot (A)
figure
plot (abs(fft(A)))
Punk
понимает.....
Задача именно под ДОС написать.

Как я понял спектрограмма строится на период исследуемой функции ?
ishergin
Цитата(Punk @ Dec 25 2006, 11:18) *
понимает.....
Задача именно под ДОС написать.

Как я понял спектрограмма строится на период исследуемой функции ?


Для паскаля под дос ищите архив Russian SWAG (там куча разных библиотек с исходниками). Можно поискать либы для Free Pascal или TMT Pascal или просто готовый сырец ;-)

В свое время для преобразования Фурье использовал библиотеку fftw

P.S. Если функция периодическая, то она разлагается в ряд Фурье, если же апериодическая -- то в интеграл Фурье....
dxp
Цитата(Punk @ Dec 25 2006, 12:18) *
понимает.....
Задача именно под ДОС написать.

Есть такой ЯП Python. Для него существует (свободно скачивается) библиотека pylab. При наличии установленного питона и оной библиотеки код, приведенный Станиславом, будет практически без изменений (пару инклюдов надо будет сделать) годиться к выполнению. Включая построение графиков.

Питон для ДОС: http://www.caddit.net/pythond.php.
SM
А может препод понимает аналитически выведенные формулы? Тогда и спектрограмму строить можно сразу построением графика заранее известной ф-ции. Для указанного сигнала это раз плюнуть!!!
Punk
я всеже хочу найти простой метод без библиотек в котором смогу самостоятельно разобраться.

методом перерывания инфы вот че нашел из "ИСКУССТВО СХЕМОТЕХНИКИ" в главе посвященной цифровой фильтрации,..код на фортране

A=EXP(-TS/TC)
B=1.-A
DO 10I=2,N
10X(I)=A*X(I-1)+B*X(I)

где Х-массив данных TS-интервал времени между отсчетами TC-выбранная постоянная времени фильтра

я сравнил эту формулу с формулами из литературы посвященной БПФ


и пришел к выводу что спектрограмму можно построить при помощи неё, я прав ?
SM
Цитата(Punk @ Dec 25 2006, 17:53) *
я всеже хочу найти простой метод без библиотек в котором смогу самостоятельно разобраться.

методом перерывания инфы вот че нашел из "ИСКУССТВО СХЕМОТЕХНИКИ" в главе посвященной цифровой фильтрации,..код на фортране

A=EXP(-TS/TC)
B=1.-A
DO 10I=2,N
10X(I)=A*X(I-1)+B*X(I)

где Х-массив данных TS-интервал времени между отсчетами TC-выбранная постоянная времени фильтра

я сравнил эту формулу с формулами из литературы посвященной БПФ


и пришел к выводу что спектрограмму можно построить при помощи неё, я прав ?


Нет, это цифровой фильтр НЧ первого порядка. К анализу спектра отношения не имеет. А ДПФ для точки номер "k" рассчитывается так:
Код


a=b=0.0;
for (i=0; i<N; i++) {
  a += fcos(2*pi*i*k/N) * signal[i];
  b += fsin(2*pi*i*k/N) * signal[i];
}
Punk
Цитата
Нет, это цифровой фильтр НЧ первого порядка. К анализу спектра отношения не имеет. А ДПФ для точки номер "k" рассчитывается так:
Код


a=b=0.0;
for (i=0; i<N; i++) {
  a += fcos(2*pi*i*k/N) * signal[i];
  b += fsin(2*pi*i*k/N) * signal[i];
}


Из этого цикла выходят два коэффициента a и b че сопсна с имя делать, и как определить число k, равно ли оно N ? если че простите за тупизну и настойчивость.
SM
Цитата(Punk @ Dec 26 2006, 07:57) *
Из этого цикла выходят два коэффициента a и b че сопсна с имя делать, и как определить число k, равно ли оно N ? если че простите за тупизну и настойчивость.


Тяжелый случай... k это номер выборки спектральной ф-ции в частотной области. Вычисляется для всех k от 0 до N-1. Коэфф. a и b дают на выходе X(k) = a+j*b где j сами попробуйте догадаться что.
Punk
Цитата
Тяжелый случай... k это номер выборки спектральной ф-ции в частотной области. Вычисляется для всех k от 0 до N-1. Коэфф. a и b дают на выходе X(k) = a+j*b где j сами попробуйте догадаться что.


Случай действительно тяжелый так как я математику ни черта не знаю а ща пытаюсь восполнить все пробелы.

В общем я разобрался всем спасибо.

P.S. а j это наверно мнимая еденица ,...может быть
vladv
Цитата(SM @ Dec 25 2006, 18:43) *
Цитата(Punk @ Dec 25 2006, 17:53) *

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

методом перерывания инфы вот че нашел из "ИСКУССТВО СХЕМОТЕХНИКИ" в главе посвященной цифровой фильтрации,..код на фортране

A=EXP(-TS/TC)
B=1.-A
DO 10I=2,N
10X(I)=A*X(I-1)+B*X(I)

где Х-массив данных TS-интервал времени между отсчетами TC-выбранная постоянная времени фильтра

я сравнил эту формулу с формулами из литературы посвященной БПФ


и пришел к выводу что спектрограмму можно построить при помощи неё, я прав ?


Нет, это цифровой фильтр НЧ первого порядка. К анализу спектра отношения не имеет. А ДПФ для точки номер "k" рассчитывается так:
Код


a=b=0.0;
for (i=0; i<N; i++) {
  a += fcos(2*pi*i*k/N) * signal[i];
  b += fsin(2*pi*i*k/N) * signal[i];
}



SM, не путайте Punk-а. Формула, которую он привел, действительно ДФП. WN**kn = exp(-j*2*pi*k*n/N), где j мнимая единица.

Хотя на фильтр (правда не НЧ и не 1-го порядка) это действительно похоже. Что и не удивительно, поскольку БФП N-того порядка можно трактовать как набор из N фильтров: по одному на каждую "выходную" частоту.
SM
Цитата(vladv @ Dec 26 2006, 18:46) *
SM, не путайте Punk-а.


Нет, это Вы его не путайте. Я сказал ему не про формулу, а про КОД НА ФОРТРАНЕ. Который к ПФ никакого отношения не имеет, а есть РЕКУРСИВНЫЙ ФИЛЬТР НЧ ПЕРВОГО ПОРЯДКА. А что формула ДПФная это и ежу понятно. И, пожалуйста, повнимательнее читайте кто что пишет.
vladv
Цитата(SM @ Dec 27 2006, 02:45) *
Цитата(vladv @ Dec 26 2006, 18:46) *

SM, не путайте Punk-а.


Нет, это Вы его не путайте. Я сказал ему не про формулу, а про КОД НА ФОРТРАНЕ. Который к ПФ никакого отношения не имеет, а есть РЕКУРСИВНЫЙ ФИЛЬТР НЧ ПЕРВОГО ПОРЯДКА. А что формула ДПФная это и ежу понятно. И, пожалуйста, повнимательнее читайте кто что пишет.


Упс. Сорри. Новый Год, наверное, приближается. santa2.gif
Krys
Цитата(Punk @ Dec 22 2006, 18:31) *
Здравствуйте мегаматематики. Попросили(добровольно-принудительно) меня в технаре написать програмку на камп чтобы строила 2 графика гармонических функций а ниже нарисовала спектр сигнала, являющегося суммой этих двух гармоник.
Если требуется нарисовать спектр именно суммы двух гармоник, то полностью поддерживаю SM в его сообщении от Dec 22 2006, 19:02. Ничего с преобразованиями Фурье мудрить не надо. Спектр будет состоять из двух палок на частотах этих гармоник. Высота палок будет соответствовать амплитуде.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.