Сигнал: виды сигналов, особенности, сферы применения и отзывы. Виды модуляции сигналов

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

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

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

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

Сигнал

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

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

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

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

Периодические сигналы

Периодические сигналы являются самыми распространенными, поскольку включают в себя синусоиды. Переменный ток в розетке дома представляет из себя синусоиду, плавно изменяющуюся с течением времени с частотой 50Гц.

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

Период может изменяться от долей секунды до тысяч секунд, так как он связан с его частотой. Например, синусоидальный сигнал, которому требуется 1 секунда для совершения полного цикла, имеет период равный одной секунде. Аналогично, для синусоидального сигнала, которому требуется 5 секунд для совершения полного цикла, имеет период равный 5 секундам, и так далее.

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

Виды сигналов

Имеется несколько видов, а также классификации уже имеющихся сигналов. Рассмотрим их.

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

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

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

Прямоугольный сигнал

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

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

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

Отношение периода повторения сигнала

*** QuickLaTeX cannot compile formula: T *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37 , к длительности положительного импульса *** QuickLaTeX cannot compile formula: \tau *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37

, называют скважностью:

*** QuickLaTeX cannot compile formula: \ *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37

Величину обратную скважности называют коэффициентом заполнения (duty cycle):

*** QuickLaTeX cannot compile formula: \ *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37

Пример расчета

Пусть имеется прямоугольный сигнал с импульсом длительностью 10мс и коэффициентом заполнения 25%. Необходимо найти частоту этого сигнала.

Коэффициент заполнения равен 25% или ¼, и совпадает с шириной импульса, которая составляет 10мс. Таким образом, период сигнала должен быть равен: 10мс (25%) + 30мс (75%) = 40мс (100%).

*** QuickLaTeX cannot compile formula: f = \frac{1}{T} = \frac{1}{(10 + 30) \cdot 10^{-3}c} = 25 *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37

Гц

Прямоугольные сигналы могут использоваться для регулирования количества энергии, отдаваемой в нагрузку, такую, например, как лампа или двигатель, изменением скважности сигнала. Чем выше коэффициент заполнения, тем больше среднее количество энергии должно быть отдано в нагрузку, и, соответственно, меньший коэффициент заполнения, означает меньшее среднее количество энергии, отдаваемое в нагрузку. Отличным примером этого является использование широтно-импульсной модуляции в регуляторах скорости. Термин широтно-импульсная модуляция (ШИМ) буквально и означает «изменение ширины импульса».

Для чего обрабатывается сигнал?

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

Также нужно отметить другие причины, по которым происходит обработка сигналов. Она заключается в том, чтобы сжать частоты, которые передаются, однако не повредив всю информацию. Далее ее форматируют еще раз и передают. При этом делается это на медленных скоростях. Если говорить о сигналах аналогового и цифрового вида, то здесь используются особенные способы. Имеется фильтрация, свертка и некоторые другие функции. Они нужны для того, чтобы восстановить информацию, если сигнал был поврежден.

Что такое сигнал

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

Обычно сигнал, независимо от его физической природы, представляют, как некоторую функцию времени x(t). Такое представление есть общепринятая математическая абстракция физического сигнала.

Типы сигналов

  • Детерминированный, или регулярный – это сигнал, закон изменения которого известен и известны все его параметры.

Такой сигнал передает информацию? Информация уменьшает неопределенность. В детерминированном сигнале мы знаем все, мы знаем какой он будет через минуту, через год. Детерминированный сигнал информацию в себе никакую не несет. Например, сигнал с гетеродина, мы сами его сформировали, задали частоту, амплитуду, фазу.

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

Пример: x(t)=Asin(wt+j), где амплитуда А и j — случайная величина.

Например, мы знаем его частоту, но не знаем амплитуду и фазу — это квазидетерминированный сигнал, “квази”-почти, почти определенный сигнал. Информация вносит некоторую случайность. Если мы знаем амплитуду, частоту и фазу, значит информации там нет. Квазидетерминированный сигнал передает информацию, передача информации идет в тех параметрах, которые случайны, в нашем примере амплитуда и фаза случайные величины. Именно в этих величинах передается информация. Информация всегда несет в себе хаос, случайность. Все модулированные сигналы, ЧМ, ФМ это квазидетерминированные сигналы.

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

Кроме этого все сигналы могут быть непрерывными (аналоговыми) и дискретными (цифровыми или импульсными).

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

Параметры сигналов

Какие параметры мы будем использовать? Это энергия за некоторый интервал времени T. X(t) это сам сигнал, чтобы определить энергию мы должны взять по модулю, возвести в квадрат, проинтегрировать на некотором промежутке времени и получим энергию.

Средняя мощность за некоторое время t. Это энергия деленная на время.

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

Средняя мощность измеряется на промежутке времени, а мгновенная в точке.

Спектральная плотность энергии и мощности

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

И соответственно, СПМ это, как у нас распределяется мощность по частотному диапазону.

В формуле, модуль в квадрате это спектральная плотность энергии, поделили ее на время T и по определению, время T должно стремиться к бесконечности. Но на практике, никто не ждет бесконечности, все оценивают СПМ на некотором интервале времени.

СПМ это некоторая функция зависящая от частоты. По шкале СПМ возьмем 10 Вт/Гц, и окрестности в 1 Гц по частоте. То в полосе 1 Гц будет заключено 10 Вт мощности.

Есть два сигнала и представлены их спектральные плотности мощности. ВОПРОС. Мощность какого сигнала больше?

Мы должны определить площадь под кривой, проинтегрировать. S1=2*10=20 Вт, S2=1*30=30 Вт. В первом случае S1 имеет мощность 20 Вт, а во втором 30 Вт.

СПМ реального сигнала, отображаемая на спектральном анализаторе.

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

Создание и форматирование

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

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

Динамический диапазон

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

Следует заметить, что информация зависит полностью от особенностей ее исполнения. Причем речь идет как о музыке, так и о разговорах простого человека. Если брать диктора, который будет читать новости, то его динамический диапазон будет составлять не больше 30 децибел. А если читать какое-либо произведение в красках, то этот показатель вырастет до 50.

Аналоговый сигнал

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

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

Цифровой сигнал

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

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

Таким образом, через один физический канал пользователь может без труда отправить несколько сообщений. Нужно заметить, что, в отличие от видов звукового сигнала, которые являются максимально распространенными на данный момент, а также аналогового, цифровой не делится на несколько типов. Он является единственным и самостоятельным. Представляет собой двоичный поток. Сейчас является довольно популярным, его просто использовать, о чем свидетельствуют отзывы.

Синусоидальный сигнал

Время периода часто измеряется в секундах ( с ), миллисекундах (мс) и микросекундах (мкс).

Для синусоидальной формы волны, время периода сигнала также можно выражать в градусах, либо в радианах, учитывая, что один полный цикл равен 360° (Т = 360°), или, если в радианах, то

*** QuickLaTeX cannot compile formula: 2 \pi *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37 (T = *** QuickLaTeX cannot compile formula: 2 \pi *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37

).

Период и частота математически являются обратными друг другу величинами. С уменьшением времени периода сигнала, его частота увеличивается и наоборот.

Соотношения между периодом сигнала и его частотой:

*** QuickLaTeX cannot compile formula: f = \frac{1}{T} *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37

Гц

*** QuickLaTeX cannot compile formula: T = \frac{1}{f} *** Error message: Cannot connect to QuickLaTeX server: SSL certificate problem: certificate has expired Please make sure your server/PHP settings allow HTTP requests to external resources («allow_url_fopen», etc.) These links might help in finding solution: https://wordpress.org/extend/plugins/core-control/ https://wordpress.org/support/topic/an-unexpected-http-error-occurred-during-the-api-request-on-wordpress-3?replies=37

c

Один герц в точности равен одному циклу в секунду, но один герц является очень маленькой величиной, поэтому часто можно встретить префиксы, обозначающие порядок величины сигнала, такие как кГц, МГц, ГГц и даже ТГц

ПрефиксОпределениеЗаписьПериод
КилотысячакГц1 мс
МегамиллионМГц1 мкс
ГигамиллиардГГц1 нс
ТератриллионТГц1 пс

Применение цифрового сигнала

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

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

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

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

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

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

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

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

Дискретный сигнал

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

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

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

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

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

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

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

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

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

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

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

Обращаю внимание, что формула чистого синуса соответствует той, о которой мы говорили выше. Амплитуда 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 %f\n»,cur_freq, (sqrt(out
*out+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

Сгенерируем файл, (рекомендую к прослушиванию). Поглядим его в 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

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

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

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

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

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

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

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

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

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

Заключение

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

Виды модуляции

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

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

Рейтинг
( 1 оценка, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]