#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "dspl.h"
#define N 200000
#define T 4.0
#define A 2.0
#define M 121
#define TAU 1.0
#define DEC 50
int main(int argc, char* argv[])
{
double* t = NULL; /* время (сек) */
double* s = NULL; /* входной сигнал */
complex_t* sc = NULL; /* комплексный модулированный сигнал */
complex_t S[M]; /* комплексный спектр периодического сигнала */
double Smag[M]; /* амплитудный спектр периодического сигнала */
double Sphi[M]; /* фазовый спектр периодического сигнала */
double w[M]; /* частота (рад/c) дискретного спектра */
void* hdspl;
void* hplot; /* GNUPLOT handle */
int k, i;
/* Загружаем libdspl.dll */
hdspl = dspl_load();
if(!hdspl)
{
printf("Сannot to load libdspl!\n");
return 0;
}
/* выделяем память под массивы данных */
t = (double*)malloc(N*sizeof(double));
s = (double*)malloc(N*sizeof(double));
sc = (complex_t*)malloc(N*sizeof(complex_t));
/* массив времени в который укладывается 4 периода сигнала */
linspace(-T*2.0, T*2.0, N, DSPL_PERIODIC, t);
/* 4 периода повторения п-импульса */
signal_pimp(t, N, A, TAU, 0.0, T, s);
/* расчет спектра */
fourier_series_dec(t, s, N, T, M, w, S);
/* Расчет амплитудного и фазового спектра
* исходной периодической последовательности
* прямоугольных импульсов */
for(k = 0; k < M; k++)
{
Smag[k] = ABS(S[k])/4.0;
Sphi[k] = atan2(IM(S[k]), RE(S[k]));
}
/* Сохранение амплитудного и фазового спектра в файл */
writetxt(w, Smag, M, "dat/fourier_series_prop_spectrum_amp_a.txt");
writetxt(w, Sphi, M, "dat/fourier_series_prop_spectrum_phi_a.txt");
/* Умножение исходного сигнала на комплексную
* экспоненту exp(j*10*pi*t)*/
double w0 = 10.0*M_PI;
for(k = 0; k < N; k++)
{
RE(sc[k]) = s[k] * cos(w0*t[k]);
IM(sc[k]) = s[k] * sin(w0*t[k]);
}
/* разложение в ряд Фурье */
fourier_series_dec_cmplx(t, sc, N, T, M, w, S);
/* Расчет амплитудного и фазового спектра
* модулированной комплексной экспонентой
* периодической последовательности
* прямоугольных импульсов */
for(k = 0; k < M; k++)
{
Smag[k] = ABS(S[k])/4.0;
Sphi[k] = atan2(IM(S[k]), RE(S[k]));
}
/* Сохранение амплитудного и фазового спектра в файл */
writetxt(w, Smag, M, "dat/fourier_series_prop_spectrum_amp_se.txt");
writetxt(w, Sphi, M, "dat/fourier_series_prop_spectrum_phi_se.txt");
/* децимирую массивы времени и сигнала
* в DEC раз для сохранения в файлы */
decimate(t, N, DEC, t, &i);
decimate(s, N, DEC, s, &i);
/* сохраняю в файл dat/fourier_series_prop_time_a.txt */
writetxt(t, s, i, "dat/fourier_series_prop_time_a.txt");
/* Децимируем модулированный комплексный
* сигнал в DEC раз для сохранения в файл */
decimate_cmplx(sc, N, DEC, sc, &i);
/* сохраняю реальную и мнимую часть децимированного сигнала
* в файлы dat/fourier_series_prop_time_se_re.txt (реальная часть)
* dat/fourier_series_prop_time_se_im.txt (мнимая часть)
*/
writetxt_cmplx_re(t, sc, i, "dat/fourier_series_prop_time_se_re.txt");
writetxt_cmplx_im(t, sc, i, "dat/fourier_series_prop_time_se_im.txt");
/* снова заполняю массив времени потому что он был продецимирован */
linspace(-T*2.0, T*2.0, N, DSPL_PERIODIC, t);
/* 4 периода повторения п-импульса */
signal_pimp(t, N, A, TAU, 0.0, T, s);
/* модулирую сигнал вещественным косинусоидальным сигналом */
for(k = 0; k < N; k++)
{
s[k] *= cos(w0*t[k]);
}
/* разложение в ряд Фурье */
fourier_series_dec(t, s, N, T, M, w, S);
/* Расчет амплитудного и фазового спектра
* модулированной вещественным сигналом
* периодической последовательности
* прямоугольных импульсов */
for(k = 0; k < M; k++)
{
Smag[k] = ABS(S[k])/4.0;
Sphi[k] = atan2(IM(S[k]), RE(S[k]));
}
/* Сохранение амплитудного и фазового спектра в файл */
writetxt(w, Smag, M, "dat/fourier_series_prop_spectrum_amp_sc.txt");
writetxt(w, Sphi, M, "dat/fourier_series_prop_spectrum_phi_sc.txt");
/* Децимирую и сохраняю в файл dat/fourier_series_prop_time_sc.txt
* модулированный вещественный сигнал
*/
decimate(t, N, DEC, t, &i);
decimate(s, N, DEC, s, &i);
writetxt(t, s, i, "dat/fourier_series_prop_time_sc.txt");
gnuplot_create(argc, argv, 1200, 640, "img/plot.png", &hplot);
gnuplot_cmd(hplot, "unset key");
gnuplot_cmd(hplot, "set multiplot layout 3, 3 rowsfirst");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_time_a.txt' with lines");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_time_se_re.txt' with lines,\\");
gnuplot_cmd(hplot, " 'dat/fourier_series_prop_time_se_im.txt' with lines");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_time_sc.txt' with lines");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_spectrum_amp_a.txt' with impulses lt 1 ,\\");
gnuplot_cmd(hplot, " 'dat/fourier_series_prop_spectrum_amp_a.txt' with points pt 7 ps 0.5 lt 1");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_spectrum_amp_se.txt' with impulses lt 1 ,\\");
gnuplot_cmd(hplot, " 'dat/fourier_series_prop_spectrum_amp_se.txt' with points pt 7 ps 0.5 lt 1");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_spectrum_amp_sc.txt' with impulses lt 1 ,\\");
gnuplot_cmd(hplot, " 'dat/fourier_series_prop_spectrum_amp_sc.txt' with points pt 7 ps 0.5 lt 1");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_spectrum_phi_a.txt' with impulses lt 1 ,\\");
gnuplot_cmd(hplot, " 'dat/fourier_series_prop_spectrum_phi_a.txt' with points pt 7 ps 0.5 lt 1");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_spectrum_phi_se.txt' with impulses lt 1 ,\\");
gnuplot_cmd(hplot, " 'dat/fourier_series_prop_spectrum_phi_se.txt' with points pt 7 ps 0.5 lt 1");
gnuplot_cmd(hplot, "plot 'dat/fourier_series_prop_spectrum_phi_sc.txt' with impulses lt 1 ,\\");
gnuplot_cmd(hplot, " 'dat/fourier_series_prop_spectrum_phi_sc.txt' with points pt 7 ps 0.5 lt 1");
gnuplot_close(hplot);
/* Выгружаем libdspl.dll из памяти */
dspl_free(hdspl);
/* очищаем выделенную память */
free(s);
free(t);
free(sc);
return 0;
}
Некоторые свойства разложения периодических сигналов в ряд Фурье
![]() DSPL-2.0 — свободная библиотека алгоритмов цифровой обработки сигналов Распространяется под лицензией LGPL v3
Страница проекта на SourceForge
|
В предыдущем разделе было рассмотрено разложение периодических сигналов в ряд Фурье. Были приведены выражения для ряда Фурье в тригонометрической и комплексной форме, а также введено понятие спектра периодического сигнала.

1768–1830
Показано, что спектр периодического сигнала представляет собой
дискретную (линейчатую) функцию
, определенную на равноотстоящей сетке частот
,
В данном разделе мы рассмотрим некоторые свойства спектров периодических сигналов. Как мы увидим позже, аналогичными свойствами обладают преобразование Фурье непериодических сигналов, а также дискретное преобразование Фурье.
Пусть имеются два периодических сигнала и
с равными периодами повторения
,
причем оба сигнала удовлетворяют условиям Дирихле [1, стр. 165]. Сигналы
и
могут быть
представлены рядом Фурье с коэффициентами разложения
и
,
где
,
Везде далее в этом разделе мы будем считать сигналы и
периодическими
с равными периодами повторения
, причем оба сигнала удовлетворяют условиям Дирихле.
Тогда сигнал
также является периодическим сигналом с периодом
,
и может быть представлен рядом Фурье с коэффициентами:




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


Циклический сдвиг характерен периодическим сигналам.
Спектр сигнала
с циклическим временным сдвигом равен:










Пусть сигнал представляет собой циклическую (периодическую) свертку [2, стр. 362] сигналов
и










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






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






1707–1783


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




На рисунке 2 показан пример частотного сдвига сигнала при умножении
на комплексную экспоненту
при
рад/c.

при умножении сигнала на комплексную экспоненту

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





На рисунке 3 показан пример частотного сдвига сигнала при умножении
на
при
рад/c (5 Гц), и
рад.

при умножении на

Из рисунка 3 можно видеть, что спектр смещенного по частоте сигнала
есть сумма смещенных на частоты
спектров
половинной амплитуды.
При этом заметим, что вещественный сигнал остается вещественным
с симметричным амплитудным и антисимметричным фазовым спектром.
\label{fourier_series_prop:parseval}

1755–1836






Подставим в (19) вместо выражение ряда Фурье в комплексной форме:







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




Окончательно:





Наличие множителя приводит к тому, что спектр
с ростом частоты
затухает слабее чем спектр исходного сигнала
. Поэтому изначально мы наложили ограничение на исходный сигнал: он должен быть непрерывным и дифференцируемым, тогда его спектр
будет затухать быстрее чем
, и умножение на
не приведет к росту
с увеличением частоты.
\label{fourier_series_prop:subsec_int}
Пусть теперь представляет собой сигнал с нулевой постоянной составляющей. Спектр
сигнала
равен нулю на нулевой частоте:
.
Тогда сигнал





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

Рассмотрим спектр сигнала
. Для этого заметим, что сигнал
ничто иное, как производная сигнала
. Тогда использую свойство спектра производной сигнала (26) можно записать:


















В данном разделе мы рассмотрели некоторые свойства спектров периодических сигналов: линейность, свойства временного и частотного сдвигов, спектр свертки и произведения сигналов. Мы также проанализировали свойство симметрии спектра вещественного сигнала и получили, что амплитудный спектр периодического сигнала является симметричным, а фазовый спектр — антисимметричным относительно нулевой частоты. Также мы рассмотрели равенство Парсеваля, которое устанавливает соотношение средней мощности сигнала во временной и частотной областях, и свойство дифференцирования и интегрирование исходного сигнала.
В следующем разделе мы проанализируем разложение непериодических сигналов по системе комплексных экспонент и получим непрерывное преобразование Фурье.
Данные для построения рисунков данного раздела были просчитаны при использовании библиотеки DSPL-2.0
Ниже приведён исходный код программы расчета данных для построения рисунков 2 и 3:
Преобразование Фурье непериодических сигналов
Свойства преобразования Фурье
Спектральные плотности некоторых сигналов