Как найти спектр синуса

Гармонические колебания

Время на прочтение
10 мин

Количество просмотров 256K

На хабре было несколько статей по преобразованию Фурье и о всяких красивостях типа Цифровой Обработки Сигналов (ЦОС), но неискушённому пользователю совершенно не понятно, зачем всё это нужно и где, а главное как это применить.


АЧХ шума.

Лично мне после прочтения этих статей (например, этой ) не стало понятно, что это и зачем оно нужно в реальной жизни, хотя было интересно и красиво.
Хочется не просто поглядеть красивые картинки, а так сказать, ощутить нутром, что и как работает. И я приведу конкретный пример с генерацией и обработкой звуковых файлов. Можно будет и послушать звук, и поглядеть его спектр, и понять, почему это так.
Статья не будет интересна тем, кто владеет теорией функций комплексной переменной, ЦОС и прочими страшными темами. Она скорее для любопытствующих, школьников, студентов и им сочувствующих :).

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

Пару слов о матчасти

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


Гармонические колебания

Т.е. фактически график синуса получается из вращения вектора, который описывается формулой:

f(x) = A sin (ωt + φ),

где A — длина вектора (амплитуда колебаний), φ — начальный угол (фаза) вектора в нулевой момент времени, ω — угловая скорость вращения, которая равна:

ω=2 πf, где f — частота в Герцах.

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

Магия начинается тогда, когда оказывается, что представление абсолютно любого сигнала можно представить в виде суммы (зачастую бесконечной) различных синусоид. Иначе говоря, в виде ряда Фурье.
Я приведу пример из английской википедии. Для примера возьмём пилообразный сигнал.


Пилообразный сигнал

Его сумма будет представлена следующей формулой:

Если мы будем по очерёдно суммировать, брать сначала n=1, затем n=2 и т.д., то увидим, как у нас гармонический синусоидальный сигнал постепенно превращается в пилу:

Наверное красивее всего это иллюстрирует одна программа, найденная мной на просторах сети. Выше уже говорилось, что график синуса является проекцией вращающегося вектора, а как же быть в случае более сложных сигналов? Это, как ни странно, проекция множества вращающихся векторов, а точнее их суммы, и выглядит это всё так:


Вектора рисуют пилу.

Вообще рекомендую сходить самим по ссылке и попробовать самим поиграться с параметрами, и посмотреть как меняется сигнал. ИМХО более наглядной игрушки для понимания я ещё не встречал.

Ещё следует заметить, что есть обратная процедура, позволяющая получить из данного сигнала частоту, амплитуду и начальную фазу (угол), которое называется Преобразование Фурье.


Разложение в ряд Фурье некоторых известных периодических функций (отсюда)

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

Переходим к практическим упражнениям!

Мне кажется, что каждый студент задаётся вопросом, сидя на лекции, например по матану: зачем мне весь этот бред? И как правило, не найдя ответа в обозримом будущем, к сожалению, теряет интерес к предмету. Поэтому я сразу покажу практическое применение данных знаний, а вы эти знания уже будете осваивать сами :).

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

Для начала напишем программу для формирования звукового файла. Был взят wav-файл, как самый простой. Прочитать про его структуру можно тут.
Если кратко, то структура wav-файла описывается так: заголовок, который описывает формат файла, и далее идёт (в нашем случае) массив 16-ти битных данных (остроконечник) длиной: частота_дискретизации*t секунд или 44100*t штук.

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

github.com/dlinyj/generate_wav

Сгенерируем двухсекундный звуковой файл с чистым синусом частотой 100 Гц. Для этого модифицируем программу таким образом:

#define S_RATE  (44100) //частота дискретизации
#define BUF_SIZE (S_RATE*10) /* 2 second buffer */
….

int main(int argc, char * argv[])
{
...
	float amplitude = 32000; //берём максимальную возможную амплитуду
	float freq_Hz = 100; //частота сигнала
	/* fill buffer with a sine wave */
	for (i=0; i<BUF_SIZE; i++)
	{

		buffer[i] +=(int)(amplitude * sin((float)(2*M_PI*i*freq_Hz/S_RATE))); 
	}
	write_wav("test.wav", BUF_SIZE, buffer, S_RATE);
 
	return 0;
}

Обращаю внимание, что формула чистого синуса соответствует той, о которой мы говорили выше. Амплитуда 32000 (можно было взять 32767) соответствует значению, которое может принимать 16-ти битное число (от минус 32767 до плюс 32767).

В результате получаем следующий файл (можно его даже послушать любой звуковоспроизводящей программой). Откроем данный файл audacity и увидим, что график сигнала в действительности соответствует чистому синусу:


Чистый ламповый синус

Поглядим спектр этого синуса (Анализ->Построить график спектра)


График спектра

Виден чистый пик на 100 Гц (логарифмический масштаб). Что такое спектр? Это амплитудно-частотная характеристика. Существует ещё фазочастотная характеристика. Если помните, выше я говорил, что для построения сигнала надо знать его частоту, амплитуду и фазу? Так вот, можно из сигнала получить эти параметры. В данном случае у нас график соответствий частот амплитуде, при чём амплитуда у нас не в реальных единицах, а в Децибелах.

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

В данном случае просто логарифм амплитуды, умноженный на 10. Логарифмический масштаб удобно использовать при работе с сигналами.

Мне, честно говоря, не очень нравится анализатор спектра в этой программе, поэтому я решил написать свой

с блекджеком и шлюхами

, тем более, что это несложно.

Пишем свой анализатор спектра

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

Поскольку я прекрасно понимаю, что тут портянки кода размещать нет смысла, те, кому реально интересно — сами найдут и поковыряют, а тем, кому это неинтересно, будут скучать, то я остановлюсь только на основных моментах написания анализатора спектра wav-файла.

Во-первых, нам wav-файл необходимо читать. Там необходимо прочитать заголовок, чтобы понять, что содержит данный файл. Я не стал реализовывать море вариантов чтения данного файла, а остановился только на одном. Пример чтения файла был взят отсюда практически без изменений, ИМХО — отличный пример. Там же есть реализация на питоне.

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

вектора

исходных сигналов. Пусть вас пока это не пугает, дальше я объясню.
Опять же, велосипед изобретать не стал, а взял готовый пример отсюда.

Я понимаю, что чтобы объяснить, как работает программа, надо объяснить, что такое быстрое преобразование Фурье, а это как минимум ещё на одну некислую статью.

Для начала алокируем массивы:

	c = calloc(size_array*2, sizeof(float)); // массив поворотных множителей
	in = calloc(size_array*2, sizeof(float)); //входный массив
	out = calloc(size_array*2, sizeof(float)); //выходной массив

Скажу лишь, что в программе мы читаем данные в массив длиной size_array (которое берём из заголовка wav-файла).

	while( fread(&value,sizeof(value),1,wav) ) {
		in[j]=(float)value;
		j+=2;
		if (j > 2*size_array)  break;
}

Массив для быстрого преобразования Фурье должен представлять собой последовательность {re[0], im[0], re[1], im[1],… re[fft_size-1], im[fft_size-1]}, где fft_size=1<< p — число точек БПФ. Объясняю нормальным языком:
это массив комплексных чисел. Я даже боюсь представить, где используется комплексное преобразование Фурье, но в нашем случае мнимая часть у нас равна нулю, а действительная равна значению каждой точке масива.
Ещё одна особенность именно быстрого преобразования Фурье, что оно обсчитывает массивы, кратные только степени двойки. В результате мы должны вычислить минимальную степень двойки:

int p2=(int)(log2(header.bytes_in_data/header.bytes_by_capture));

Логарифм от количество байт в данных, делённых на количество байт в одной точке.

После этого считаем поворотные множители:

fft_make(p2,c);// функция расчёта поворотных множителей для БПФ (первый параметр степень двойки, второй алокированный массив поворотных множителей). 

И скармливаем наш считанный массив в преобразователь Фурье:

fft_calc(p2, c,	in,	out, 1); //(единица означает, что мы получаем нормализованный массив).

На выходе мы получаем комплексные числа вида {re[0], im[0], re[1], im[1],… re[fft_size-1], im[fft_size-1]}. Для тех, кто не знает, что такое комплексное число, поясню. Я не зря начал эту статью с кучи вращающихся векторов и кучи гифок. Так вот, вектор на комплесной плоскости определяется действительной координатой a1 и мнимой координатой a2. Или длиной (это у нас амплитуда Am) и углом Пси (фаза).


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

Обратите внимание, что size_array=2^p2. Первая точка массива соответствует частоте 0 Гц (постоянная), последняя точка соответствует частоте дискретизации, а именно 44100 Гц. В результате мы должны рассчитать частоту, соответствующей каждой точке, которые будут отличаться на частоту дельта:

double delta=((float)header.frequency)/(float)size_array; //частота дискретизации на размер массива.

Алокируем массив амплитуд:

	double * ampl;
	ampl = calloc(size_array*2, sizeof(double));

И смотрим на картинку: амплитуда — это длина вектора. А у нас есть его проекции на действительную и мнимую ось. В результате у нас будет прямоугольный треугольник, и тут мы вспоминаем теорему Пифагора, и считаем длину каждого вектора, и сразу пишем её в текстовый файл:

for(i=0;i<(size_array);i+=2) {
		fprintf(logfile,"%.6f %fn",cur_freq, (sqrt(out[i]*out[i]+out[i+1]*out[i+1])));
		cur_freq+=delta;
	}

В результате получаем файл примерно такого вида:

…
11.439514 10.943008
11.607742 56.649738
11.775970 15.652428
11.944199 21.872342
12.112427 30.635371
12.280655 30.329171
12.448883 11.932371
12.617111 20.777617
...

Окончательная версия программы обитает на гитхабе вот тут:
github.com/dlinyj/fft

Пробуем!

Теперь скармливаем получившейся программе тот звуковой файл синуса

./fft_an ../generate_wav/sin 100 Hz.wav 
format: 16 bits, PCM uncompressed, channel 1, freq 44100, 88200 bytes per sec, 2 bytes by capture, 2 bits per sample, 882000 bytes in data

chunk=441000
log2=18
size array=262144 
wav format
Max Freq = 99.928 , amp =7216.136

И получаем текстовый файл АЧХ. Строим его график с помощью гнуплота

Скрипт для построения:

#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "result.ps"
#set terminal png size 800, 600
#set output "result.png"

set grid xtics ytics
set log xy
set xlabel "Freq, Hz" 
set ylabel "Amp, dB"

set xrange [1:22050]
#set yrange [0.00001:100000]

plot "test.txt" using 1:2 title "AFC" with lines linestyle 1

Обратите внимание на ограничение в скрипте на количество точек по X: set xrange [1:22050]. Частота дискретизации у нас 44100, а если вспомнить теорему Котельникова, то частота сигнала не может быть выше половины частоты дискретизации, следовательно сигнал выше 22050 Гц нас не интересует. Почему так, советую прочитать в специальной литературе.
Итак (барабанная дробь), запускаем скрипт и лицезреем:


Спектр нашего сигнала

Обратите внимание на резкий пик на частоте 100 Гц. Не забывайте, что по осям — логарифмический масштаб! Шерсть справа, как я думаю, ошибки преобразования Фурье (тут на память приходят окна).

А давайте побалуем?

А давайте! Давайте поглядим спектры других сигналов!

Вокруг шум…

Для начала построим спектр шума. Тема про шумы, случайные сигналы и т.п. достойна отдельного курса. Но мы её коснёмся слегка. Модифицируем нашу программу генерации wav-файла, добавим одну процедуру:

double d_random(double min, double max)
{
    return min + (max - min) / RAND_MAX * rand();
}

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

int main(int argc, char * argv[])
{
	int i;
	float amplitude = 32000;
	srand((unsigned int)time(0)); //инициализируем генератор случайных чисел
	for (i=0; i<BUF_SIZE; i++)
	{
		buffer[i] +=(int)amplitude*d_random(-1.0, 1.0); //nois		
	}
	write_wav("test.wav", BUF_SIZE, buffer, S_RATE);
 	return 0;
}

Сгенерируем файл, (рекомендую к прослушиванию). Поглядим его в audacity.


Сигнал в audacity

Поглядим спектр в программе audacity.


Спектр

И поглядим спектр с помощью нашей программы:


Наш спектр

Хочу обратить внимание на очень интересный факт и особенность шума — он содержит в себе спектры всех гармоник. Как видно из графика, спектр вполне себе ровный. Как правило, белый шум используется для частотного анализа пропускной способности, например, аудиоаппаратуры. Существуют и другие виды шумов: розовый, синий и другие. Домашнее задание — узнать, чем они отличаются.

А компот?

А теперь давайте посмотрим другой интереснейший сигнал — меандр. Я там выше приводил табличку разложений различных сигналов в ряды Фурье, вы поглядите как раскладывается меандр, выпишите на бумажку, и мы продолжим.

Для генерации меандра с частотой 25 Гц мы модифицируем в очередной раз наш генератор wav-файла:

int main(int argc, char * argv[])
{
	int i;
	short int meandr_value=32767;
	/* fill buffer with a sine wave */
	for (i=0; i<BUF_SIZE; i++)
	{
		//meandr
		if (!(i%(S_RATE/((int)freq_Hz/2)))) {
			if (meandr_value==32767) {
				meandr_value=-32767;
			} else { 
				meandr_value=32767;
			}
		}
		buffer[i]=meandr_value;
	}
	write_wav("test.wav", BUF_SIZE, buffer, S_RATE);
	return 0;
}

В результате получим звуковой файл (опять же, советую послушать), который сразу надо посмотреть в audacity


Его величество — меандр или меандр здорового человека

Не будем томиться и поглядим его спектр:


Спектр меандра

Пока не очень что-то понятно, что такое… А давайте поглядим несколько первых гармоник:


Первые гармоники

Совсем другое дело! Ну-ка поглядим табличку. Смотрите-ка, у нас есть только 1, 3, 5 и т.д., т.е. нечётные гармоники. Мы так и видим, что у нас первая гармоника 25 Гц, следующая (третья) 75 Гц, затем 125 Гц и т.д., при этом у нас амплитуда постепенно уменьшается. Теория сошлась с практикой!
А теперь внимание! В реальной жизни сигнал меандра у нас имеет бесконечную сумму гармоник всё более и более высокой частоты, но как правило, реальные электрические цепи не могут пропускать частоты выше какой-то частоты (в силу индуктивности и ёмкости дорожек). В результате на экране осциллографа можно часто увидеть вот такой сигнал:


Меандр курильщика

Эта картинка прям как картинка из википедии, где для примера меандра берутся не все частоты, а только первые несколько.


Сумма первых гармоник, и как меняется сигнал

Меандр так же активно используется в радиотехнике (надо сказать, что — это основа всей цифровой техники), и стоит понимать что при длинных цепях его может отфильтровать так, что, родная мама не узнает. Его так же используют для проверки АЧХ различных приборов. Ещё интересный факт, что глушилки телевизоров работали именно по принципу высших гармоник, когда сама микросхема генерировала меандр десятки МГц, а его высшие гармоники могли иметь частоты сотни МГц, как раз на частоте работы телевизора, и высшие гармоники успешно глушили сигнал вещания телевизора.

Вообще тема подобных экспериментов бесконечная, и вы можете теперь сами её продолжить.

Рекомендации по прочтению


Книга

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

Заключение

В заключении хочу сказать, что математика — царица наук, но без реального применения многие люди теряют к ней интерес. Надеюсь, данный пост подстегнёт вас к изучению такого замечательного предмета, как обработка сигналов, и вообще аналоговой схемотехнике (затыкайте уши, чтобы не вытекали мозги!). :)
Удачи!

Спектр гармонического процесса

формально
этот спектр не существует:
,
т.е. функция не интегрируема, следовательно,
нет спектра Фурье. Но иногда очень
хочется, чтобы спектр был. Пусть спектр


существует, тогда сигнал можно восстановить
с помощью обратного преобразования.

Рис 22

Воспользуемся
свойством
-функции:

-ведет
себя как
-функция

действительно:

Спектр
синуса можно представить, как
-функцию:

Рис.23

Спектр синуса, ограниченного во времени

Рис.24

,

Спектр процесса дискретизованного во времени

-прямое
преобразование непрерывного спектра


обратное преобразование

переходим:

,
i-целое

рассмотрим:

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

Рис.25

,
где
-частота
дискретизации

как связан
непрерывный спектр процесса с дискретным
спектром? Дискретный спектр – это
повторение непрерывного спектра много
раз.

Рис.26

Связь
между этими спектрами:

— формула иллюстрирует дискретный
спектр.

Оценим,
к чему это приводит:

Рис.27

Средние части не
изменяются, т.е. повторяются без искажений:

Это
когда

(по
теореме Котельникова)

Пусть
условие теоремы Котельникова не
выполняется:

Рис.28

Получаем искажённый
сигнал. Искажение не контролируемо,
т.е. искажение нельзя восстановить.

,
где

детерминируемая функция, следовательно,
что

-детерминированный спектр. Множество
реализации
,
где
.
Этой реализации соответствует реализация
спектра
.


  1. спектр мощности случайного процесса,
    где

    корреляционная функция.

  1. ,
    где

  1. и 2) представления
    эквивалентны.

Рис.29

,где


не случайна.

Фильтрация процесса

Рассмотрим
линейный фильтр:
,
где

импульсная функция
.

Рис.30

Каждый фильтр
может быть представлен либо во временной
области, либо в частотной.

В
частотной:
,

Рис.31

Рис.32

ФНЧ – фильтр низкой
частоты

Рис.33

ФВЧ – фильтр
высокой частоты

Рис.34.

Полосный фильтр

Рис.35

Полосно-задерживающий
фильтр

Пусть
есть спектр

,

Для
случайного процесса:
,
где

и

случайны.

Методы дискретизации сигналов

,
где i=…,-2,-1,0,1,2,…

  1. =
    const,
    тогда будет равномерная дискретизация.

,

  1. =
    var
    (переменная) – это уже не равномерная
    дискретизация.


это основа адаптивной дискретизации.

Рис.36

Адаптивная
дискретизация

подстраивается под текущую скорость
процесса.

Стохастическая
дискретизация

Берем случайные интервалы.

Цель: сократить
отсчёты при стохастической и адаптивной
дискретизации.

Основные задачи:

1)
выбор
:

  • с целью восстановления
    сигнала;

  • оценка параметров
    сигнала.

Восстановление
сигнала:

восстановленная
функция:
,
т.е. имея выборку сигнала, строим функцию

,
но есть ошибка восстановления
.

,
при
.

Квадратичная
ошибка:

Оценка параметров
сигнала

Рис.37.

Нижний сигнал –
клипированный, по нему можно дать оценку.

При восстановлении
сигнала метод дискретизации основывается
на частотных представлениях. При оценке
параметров сигнала метод основывается
на оценке ошибки восстановления сигнала.

Теорема
Котельникова:

есть непрерывный процесс

с ограниченным спектром (ограничен
частотой
).

Этот
непрерывный процесс может быть
восстановлен по своим дискретным
отсчётам, взятым с частотой
.

Смысл
теоремы Котельникова: можно построить

,
возьмём непрерывный фильтр (идеальный
частотный фильтр) с частотной
характеристикой:

Рис.38

И как бы вырезаем
один кусочек:

Рис.39

Во
временной области:
-непрерывный.

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

Подставив,
получим:

.

Итак,
ряд Котельникова это:

Таким
образом, при

— полное восстановление сигнала, но есть
и ограничения:

1)

,
при
,

Рис.40

Рис.41

Спектр
расширяется, следовательно, нельзя
точно выбрать
.

Существуют методы
выбора частоты дискретизации:

:
приближённо выполняется
.

Сделаем
оценку:
,
где
,
т.е. сводим к

и работаем с ней.

  1. процесс надо
    восстановить с помощью бесконечного
    ряда.

Берём

,
где N
— количество точек.

Рис.42

,
т.к.
.

При
ограниченной реализации:

следовательно, ряд – это конечная сумма,
тогда имеем отклонения.

Ошибка восстановления:
в дискретных точках ошибка равна нулю.

Рис.43

Эта ошибка мало
контролируема.

Вывод:

“минусы”:
восстановление по ряду Котельникова
приводит к ошибкам, которые трудно
оценить, т.е. Теорема Котельникова не
гарантирует хороших результатов.

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

Соседние файлы в папке Лекции по ЦОС

  • #
  • #
  • #
  • #

При обсуждении переменного тока в одной из предыдущих статей (ссылка) мы познакомились с понятием гармонической (синусоидальной) функции. А бывают ли негармонические функции и сигналы, и как с ними работать? В этом нам и предстоит сегодня разобраться. Кроме того, мы рассмотрим важнейшее понятие — амплитудно-частотную характеристику (АЧХ) сигналов.

Гармонические и негармонические сигналы.

И для начала чуть подробнее разберемся, как классифицируются сигналы. В первую очередь, нас интересуют периодические сигналы. Их форма повторяется через определенный интервал времени T, называемый периодом. Периодические сигналы в свою очередь делятся на два больших класса — гармонические и негармонические. Гармонический сигнал — это сигнал, который можно описать следующей функцией:

Здесь A — амплитуда сигнала, w — циклическая частота, а phi — начальная фаза. Может возникнуть логичный вопрос — разве синусоидальный сигнал не является гармоническим? Конечно, является, дело в том, что sinalpha = cos(frac{pi}{2}medspace-medspace alpha) — то есть сигналы отличаются начальной фазой, соответственно, синусоидальный сигнал не противоречит определению, которое мы дали для гармонических колебаний.

Вторым подклассом периодических сигналов являются негармонические колебания. Вот пример негармонического сигнала:

Негармонический сигнал

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

Для работы с такими сигналами и их исследования существует определенная методика, которая заключается в разложении сигнала в ряд Фурье. Суть состоит в том, что негармонический периодический сигнал (при выполнении определенных условий) можно представить в виде суммы гармонических колебаний с определенными амплитудами, частотами и начальными фазами. Важным нюансом является то, что все гармонические колебания, которые участвуют в суммировании, должны иметь частоты, кратные частоте исходного негармонического сигнала. Возможно это пока не совсем понятно, так что рассмотрим практический пример и разберемся подробнее. И для примера используем сигнал, который изображен на рисунке чуть выше. Его можно представить следующим образом:

u(t) = u_1(t) + u_2(t) = 2 sin(t) + 1.5 sin(2t)

Давайте изобразим все эти сигналы на одном графике:

Разложение сигнала в ряд Фурье

Функции u_1(t), u_2(t) называют гармониками сигнала, а ту из них, период которой равен периоду негармонического сигнала, называют первой или основной гармоникой. В данном случае первой гармоникой является функция u_1(t) (ее частота равна частоте исследуемого негармонического сигнала, соответственно, равны и их периоды). А функция u_2(t) = 1.5 sin(2t) представляет из себя ни что иное как вторую гармонику сигнала (ее частота в два раза больше). В общем случае, негармонический сигнал раскладывается на бесконечное число гармоник:

u(t) = U_0 + sum_{i=0}^{infty}{U_{k}thinspace sin(thinspace kwt + phi_kthinspace )}

Здесь U_k — амплитуда, а phi_k — начальная фаза k-ой гармоники. Как мы уже упомянули чуть ранее, частоты всех гармоник кратны частоте первой гармоники, собственно, это мы и наблюдаем в данной формуле. U_0 — это нулевая гармоника, ее частота равна 0, она равна среднему значению функции за период. Почему среднему? Смотрите — среднее значения функции синуса за период равно 0, а значит при усреднении в этой формуле все слагаемые, кроме U_0 будут равны 0 👍

Амплитудный спектр сигнала.

Совокупность всех гармонических составляющих негармонического сигнала называют спектром этого сигнала. Различают фазовый и амплитудный спектр сигнала:

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

Давайте рассмотрим амплитудный спектр подробнее. Для визуального изображения спектра используют диаграммы, представляющие из себя набор вертикальных линий определенной длины (длина зависит от амплитуды сигналов). На горизонтальной оси диаграммы откладываются частоты гармоник:

Амплитудный спектр сигнала

При этом на горизонтальной оси могут откладываться как частоты в Гц, так и просто номера гармоник, как в данном случае. А по вертикальной оси — амплитуды гармоник, тут все понятно. Давайте построим амплитудный спектр сигнала для негармонического колебания, которое мы рассматривали в качестве примера в самом начале статьи. Напоминаю, что его разложение в ряд Фурье выглядит следующим образом:

u(t) = u_1(t) + u_2(t) = 2 sin(t) + 1.5 sin(2t)
Пример построения спектра сигнала

У нас есть две гармоники, амплитуды которых равны, соответственно, 2 и 1.5. Поэтому на диаграмме две линии, длины которых соответствуют амплитудам гармонических колебаний. Фазовый спектр сигнала строится аналогично, за той лишь разницей, что используются начальные фазы гармоник, а не амплитуды.

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

Амплитудно-частотная характеристика (АЧХ).

АЧХ является важнейшей характеристикой многих цепей и устройств — фильтров, усилителей звука и т. д. Даже простые наушники имеют свою собственную амплитудно-частотную характеристику. Проанализируем, какой смысл она в себе несет…

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

Аудио-сигнал

Как видите, ни о какой периодичности здесь не идет и речи. Но, к счастью, существуют специальные алгоритмы, которые позволяют представить звуковой сигнал в виде спектра входящих в него частот. Мы сейчас не будем подробно разбирать эти алгоритмы, это тема для отдельной статьи. Просто примем тот факт, что они позволяют нам осуществить такое преобразование.

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

Итак, на входе мы имеем ряд гармоник. Амплитудная-частотная характеристика показывает, как изменится амплитуда той или иной гармоники при прохождении через цепь. Рассмотрим пример АЧХ:

АЧХ

Разбираем поэтапно, что тут изображено. Начнем с осей графика АЧХ. По оси y мы откладываем величину выходного напряжения (или коэффициента усиления, как на данном рисунке). Коэффициент усиления мы считаем в дБ, соответственно величина, равная 0 дБ, соответствует усилению в 1 раз, то есть амплитуда сигнала остается неизменной.

По оси x откладываются частоты входного сигнала. Таким образом, в рассматриваемом случае для всех гармоник, частоты которых лежат в интервале от 100 до 10000 Гц, амплитуда не изменится. А сигналы всех остальных гармоник будут ослаблены.

На графике отдельно отмечены частоты f_1 и f_2. Их отличительной особенностью является то, что сигнал гармоник данных частот будет ослаблен в 1.41 раза (3 дБ) по напряжению. Это соответствует уменьшению по мощности в 2 раза . Полосу частот между f_1 и f_2 называют полосой пропускания. Получается следующая ситуация — сигналы всех гармоник, частоты которых лежат в пределах полосы пропускания устройства/цепи будут ослаблены менее, чем в 2 раза по мощности.

Практические примеры АЧХ аудио-устройств.

Частотный диапазон аудио-устройств обычно разбивают на низкие, средние и высокие частоты. Приблизительно это выглядит так:

  • 20 Гц — 160 Гц — область низких частот
  • 160 Гц — 1.28 КГц — область средних частот
  • 1.28 КГц — 20.5 КГц — область высоких частот

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

Реальная АЧХ

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

Реальная АЧХ 2

Во втором случае ситуация совсем другая — низкие и верхние частоты усиливаются, а в области средних частот для гармоник с частотой 500 Гц мы наблюдаем значительное ослабление.

Реальная АЧХ 2

А теперь усиливаются только низкие частоты. Аудио-аппаратура с такой АЧХ будет обладать высоким уровнем басов.

На этом мы и заканчиваем нашу сегодняшнюю статью. Спасибо за внимание и ждем вас на нашем сайте снова 🤝

Понравилась статья? Поделить с друзьями:
  • Как найти время на все цели
  • Как найти в инете задачу
  • Как составить мотивирующее письмо
  • Как составить иот
  • Как исправить нумерацию страниц в ворде 2016