Документация Engee
Notebook

Создание прямоугольной волны из суммы синусоид

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

Суммируем синусоиды

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

In [ ]:
t = 0:.1:10;
y = sin.(t);
plot( t, y )
Out[0]:

Добавим третью гармонику к основной гармонике и построим график.

In [ ]:
y = sin.(t) + sin.( 3t )./3;
plot(t,y)
Out[0]:

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

In [ ]:
y = @. sin(t) + sin(3t)/3 + sin(5t)/5 + sin(7t)/7 + sin(9t)/9;
plot(t,y)
Out[0]:

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

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

In [ ]:
t = 0:0.02:3.14;
y = zeros(10,length(t));
x = zeros(size(t));
for k = 1:2:19
   x = x .+ sin.(k*t)./k;
   y[Int32((k+1)/2),:] = x;
end
plot( y[1:2:9,:]', leg=false,
    title="Накопление синусоид и приближение к прямоугольной функции")
Out[0]:

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

Заключение

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