МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИМОСКОВСКИЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ
(ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ)
Кафедра радиоэлектроники и прикладной информатики
ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ
Методические указанияк лабораторной работе
по курсу Основы цифровойобработки сигналов
СоставителиЮ.А. Романюк
А.В. Филимонов
МОСКВАМФТИ2016
УДК 621.391
Дискретное преобразование Фурье: методические указа-ния к лабораторной работе по курсу Основы цифровой обработ-ки сигналов / сост. Ю.А. Романюк, А.В. Филимонов. – М.: МФ-ТИ, 2016. – 24 с.
Работа посвящена исследованию основных свойств дискрет-ного преобразования Фурье с помощью моделирования в средеGNU Octave или MATLAB. Предназначается для студентов, изу-чающих методы цифровой обработки сигналов.
c© Романюк Ю.А., Филимонов А.В.,2016c© Федеральное государственное автономное
образовательное учреждениевысшего профессионального образования«Московский физико-технический институт(государственный университет)», 2016
Содержание
1. Цель работы 5
2. Теоретическое введение 52.1. Дискретное преобразование Фурье . . . . . . . . . 52.2. Свойства и теоремы ДПФ . . . . . . . . . . . . . . 62.3. Соответствие между ДПФ, рядом Фурье и преоб-
разованием Фурье . . . . . . . . . . . . . . . . . . . 62.4. Связь ДПФ и ДВПФ . . . . . . . . . . . . . . . . . 82.5. Интерполяция добавлением нулевых отсчётов . . . 82.6. Временная и частотная оси ДПФ . . . . . . . . . . 9
3. Задание к допуску 10
4. Задание к выполнению 104.1. Симметрия ДПФ . . . . . . . . . . . . . . . . . . . 104.2. Циклический сдвиг . . . . . . . . . . . . . . . . . . 104.3. Частотная ось ДПФ . . . . . . . . . . . . . . . . . . 114.4. ДПФ и ДВПФ . . . . . . . . . . . . . . . . . . . . . 114.5. Фильтрация с помощью ДПФ . . . . . . . . . . . . 12
5. Защита эксперимента 12
6. Контрольные вопросы 12
7. Задачи 14
8. Работа в среде GNU Octave или MATLAB 188.1. Рабочая директория . . . . . . . . . . . . . . . . . . 188.2. Рабочая область . . . . . . . . . . . . . . . . . . . . 188.3. Язык сценариев (m-файлы) . . . . . . . . . . . . . 19
8.3.1. Переменные . . . . . . . . . . . . . . . . . . 198.3.2. Матрицы . . . . . . . . . . . . . . . . . . . . 198.3.3. Арифметические операции . . . . . . . . . . 20
8.4. Сценарии . . . . . . . . . . . . . . . . . . . . . . . . 218.5. Функции . . . . . . . . . . . . . . . . . . . . . . . . 218.6. Некоторые стандартные операции . . . . . . . . . . 228.7. Рисование графиков . . . . . . . . . . . . . . . . . . 23
3
Литература 24
4
1. Цель работыЦелью данной работы является изучение основных свойств
дискретного преобразования Фурье с помощью моделирования всреде GNU Octave или MATLAB.
2. Теоретическое введение2.1. Дискретное преобразование Фурье
Пусть x(k) – дискретная периодическая последовательностьотсчетов с периодом N (0 ≤ k ≤ N − 1). Прямое и обратноедискретное преобразование Фурье определяется следующим об-разом:
X(n) =1
N
N−1∑k=0
x(k)W−nkN (1)
x(k) =N−1∑n=0
X(n)W nkN (2)
Здесь W nkN = ej2πN nk – базисные функции ДПФ.
Пара ДПФ справедлива и для последовательности x(k) конеч-ной длины в N отсчётов. Однако при этом следует помнить, чтообратное ДПФ дает N -периодическую функцию, совпадающуюс исходной последовательностью на интервале k = 0, 1, . . . , N−1.
Таким образом, отличительной особенностью ДПФ являетсято, что сигнал и его спектр определяются на конечных и равныхинтервалах N . При этом меняется привычное понятие сдвига, аименно: сдвиг сигнала и его спектра на интервале N понимаетсякак циклическая перестановка отсчетов (часть сигнала или егоспектра, выходящая за пределы интервала N с одного конца,вставляется в этот интервал с другого конца). При циклическомсдвиге значения индексов k и n отсчитываются по модулю N :
x(k −m) = x[(k −m) mod N ] = x(k −m)N
X(n− p) = X[(n− p) mod N ] = X(n− p)N
Например, N = 64, тогда X(69)64 = X(5).
5
2.2. Свойства и теоремы ДПФ
Пусть x(k)↔ X(n) – пара ДПФ, тогда выполняются следую-щие свойства симметрии:
Сигнал ДПФ1 x∗(k) X∗(N − n)2 x(N − k) X(N − n)3 x(k) = x∗(k) X(n) = X∗(N − n)4 x(k) = −x∗(k) X(n) = −X∗(N − n)5 x(k) = x(N − k) X(n) = X(N − n)6 x(k) = −x(N − k) X(n) = −X(N − n)7 x(k) = x∗(k) = x(N − k) X(n) = X∗(n)8 x(k) = x∗(k) = −x(N − k) X(n) = −X∗(n)
Равенство Парсеваля для ДПФ:
1
N
N−1∑k=0
x(k)y∗(k) =N−1∑n=0
X(n)Y ∗(n) (3)
Теорема запаздывания:
x((k − l) mod N)↔ X(n)W−nlN (4)
Теорема о циклической свертке для ДПФ:
1
N
N−1∑k=0
x(k)h((l − k) mod N) = X(n) ·H(n) (5)
2.3. Соответствие между ДПФ, рядом Фурье ипреобразованием Фурье
В данной работе для анализа спектров сигналов используетсясреда Matlab/GNU Octave, в которой вычисления производятсятолько с дискретными отсчетами сигнала. Графики модуля ифазы спектральной плотности получаются путем интерполяциипо отсчетам дискретного преобразования Фурье.
Пусть x(t) – действительный сигнал длительностью T . РядФурье его T-периодического продолжения в общем случае можетсодержать бесконечное число членов:
x(t) =∞∑
m=−∞
Cmej 2πmtT , (6)
6
где
Cm =1
T
T∫0
x(t)e−j2πmtT (7)
Сигнал x(t) дискретизуется так, что на интервале T беретсяN отсчетов x(k∆t) с шагом ∆T = T
N. Коэффициенты ДПФ для
последовательности {x(k∆t)}
X(n) =1
N
N−1∑n=0
x(k∆t)e−j2πnkN (8)
Используя разложение x(t) в ряд Фурье, получим
X(n) =1
N
∞∑m=−∞
Cm
N−1∑n=0
e−j2π(m−n)k
N (9)
Так как дискретные экспоненциальные функции ортогональнына интервале N , то можно записать
X(n) =∞∑
l=−∞
Cn+lN (10)
Если ряд Фурье не содержит гармоник с номерами выше N2, то
при четном N
X(n) =
{Cn, n = 0, 1, 2, . . . ,
N2− 1
C−(N−n), n =N2, . . . , N − 1 (11)
Таким образом, существует ограниченный класс сигналов,для которых соответствие между коэффициентами Фурье иДПФ точное. Он включает в себя периодические сигналы с огра-ниченным спектром, дискретизованные в соответствии с теоре-мой отсчетов.
Для апериодического сигнала x(t) конечной длительности Tотсчёты его спектральной функции
X(ω) =
T/2∫−T/2
x(t)e−jωtdt (12)
7
взятые с шагом ∆ω = 2πT
также приближенно соответствуют ко-эффициентам ДПФ X(n), вычисленным по N отсчетам сигналас шагом T
N
X(n) =
{Cn =
X(n∆ω)
T, n = 0, 1, 2, . . . , N
2− 1
C−(N−n), n =N2, . . . , N − 1 (13)
2.4. Связь ДПФ и ДВПФ
Пусть x(k) – N -точечная последовательность. ДВПФ этой по-следовательности
X(ν) =N−1∑k=0
x(k)e−j2πνk. (14)
Используя обратное ДПФ, получим
X(ν) =N−1∑n=0
X(n)N−1∑k=0
e−j2π(ν−nN )k. (15)
Просуммировав геометрическую прогрессию, получим интер-поляционнаю формулу восстановления континуальной функцииX(ν) по коэффициентам ДПФ X(n)
X(ν) =N−1∑n=0
X(n)sin(π(ν − n
N)N)
sin(π(ν − nN
))e−j2π(ν−
nN )(N−1). (16)
В точках ν = nN
имеет место X(ν) = X( nN
) = NX(n). Такимобразом, коэффициенты ДПФ можно рассматривать как отсчё-ты функции 1
NX(ν), взятые с шагом ∆ν = 1
Nв соответствии с
теоремой отсчётов в частотной области.
2.5. Интерполяция добавлением нулевых отсчётов
Практический способ увеличения числа отсчётов функцииX(ν) состоит в следующем. Определим новую последователь-ность y(k) длиной в M отсчётов (M > N) путём дополненияисходной последовательности нулевыми отсчётами. Число такихнулевых отсчётов будет (M −N)
y(k) =
{x(k), 0 ≤ k ≤ N − 10, N ≤ k ≤M − 1 (17)
8
Очевидно, что ДВПФ Y (ν) совпадает с X(ν). Тогда, отсчёт-ные значения функции X(ν) в точках νm = mM , 0 ≤ m ≤ M − 1взятые с новым шагом ∆ν = 1
M, можно записать следующим
образом
X(νm) = Y (m
M) =
M−1∑k=0
y(k)e−j2πmkM (18)
Это выражение с точностью до множителя 1M
представляетсобой M -точечное ДПФ, которое может быть вычислено, напри-мер, с использованием быстрых алгоритмов.
Характерно, что если взять M = 2N , то дополнительные от-счёты будут расположены между N первоначальными. При этомулучшается качество визуализации спектральной функцииX(ν),которая остаётся неизменной от такого дополнения, так как онаопределяется первоначальной длиной массива x(k).
2.6. Временная и частотная оси ДПФ
Определим физические размерности, связанные со значения-ми индексов k и n в последовательностях x(k) иX(n). До сих порв наших рассуждениях это были просто целые числа, причём и0 ≤ k ≤ N − 1 и 0 ≤ n ≤ N − 1. Рассмотрим последовательностьx(k) из N отсчётов, взятых с шагом ∆t секунд.
N -точечное ДПФ отображает N отсчётов во временной об-ласти в N отсчётов в спектральной. Мы хотим связать X(n)с шагом дискретизации ∆t секунд, или с частотой дискрети-зации fd = 1∆t Гц. В этом случае период повторения X(n) ра-вен fd = 1∆t Гц, шаг сетки частот ДПФ (разрешение) составляет∆f = fd
N= 1
N∆tГц. Таким образом, каждый отсчёт X(n) соот-
ветствует частоте nN∆t
= nfdN
ГцВведём нормированную частоту ν = f
fd= f∆t (доли частоты
дискретизации). В этом случае период повторения X(n) равен1, шаг сетки частот ДПФ составляет ∆ν = 1
N. Эту величину
называют бином. Таким образом, каждый отсчёт соответствуетнормированной частоте νn = nN бин.
9
3. Задание к допуску1. Получить у преподавателя начальное состояние генератора
случайных чисел.
2. Скопировать скрипты для данной работы (файлы *.m) изпапки с описанием работы в папку FRTK\\. Внимание: Полный путь к файлам долженсодержать только латинские символы.
3. Записать выражения для прямого и обратного ДПФ.
4. Запустить Matlab/Octave. Сменить рабочую директорию нату, куда были скопированы скрипты.
5. Вычислить 16-точечное ДПФ единичного импульса
x(0) = 1, x(k) = 0∀k ∈ [1; 15].
Построить график модуля спектра и фазы. Провести моде-лирование и сравнить результаты.
6. Вычислить 16-точечное ДПФ дискретной функции включе-ния
x(k) = 1∀k ∈ [0; 15].
Построить график модуля спектра и фазы. Провести моде-лирование и сравнить результаты.
4. Задание к выполнению4.1. Симметрия ДПФ
1. Получить у преподавателя номер одного из свойств симмет-рии ДПФ, проиллюстрировать его на примере 8-ми точеч-ного ДПФ, построить графики модуля и фазы спектра изарисовать в тетрадь.
4.2. Циклический сдвиг
1. Открыть файл circular_shift_test.m. Задать указанное в ва-рианте значение начального состояния ГПСЧ.
10
2. Запустить скрипт circular_shift_test. Зарисовать получен-ные графики модуля и фазы ДПФ.
3. Получить у преподавателя параметры сдвига. Модифици-ровать скрипт circular_shift_test.m так, чтобы получитьграфики модуля и фазы ДПФ для последовательности,полученной из входной последовательности циклическимсдвигом.
4. Запустить скрипт circular_shift_test. Зарисовать получен-ные графики модуля и фазы ДПФ. Сравнить с исходнымиграфиками и объяснить полученные результаты.
4.3. Частотная ось ДПФ
1. Открыть файл frequency_test.m. Задать указанное в вари-анте значение начального состояния ГПСЧ.
2. В скрипте frequency_test на вход ДПФ подается сигнал со-стоящий из суммы двух синусоид различной амплитуды счастотами f1 и f2 Гц, где f1 и f2 – целые числа, а такжешума.
3. Определить расстояние в герцах между соседними бинами.
4. По спектру оценить частоты f1 и f2 с точностью до 1 Гц.Указание: пронаблюдать, как на спектр влияет частота дис-кретизации (Fd) и время накопления сигнала (RunToTime).
4.4. ДПФ и ДВПФ
1. Открыть файл dvpf_test.m. Задать указанное в вариантезначение начального состояния ГПCЧ.
2. В скрипте dvpf_test на вход ДПФ подается сигнал состоя-щий из суммы двух синусоид различной амплитуды с часто-тами f1 и f2 Гц. На графике рисуется огибающая, построен-ная по отсчетам ДПФ, аппроксимирующая вид ДВПФ длявходного сигнала.
3. Требуется по спектру оценить частоты f1 и f2 с точностьюдо 1 Гц. Указание: пронаблюдайте, как на спектр влияетколичество нулей, дописанных в конец входной последова-тельности.
11
4. Сравните результаты, полученные с помощью добавлениянулей в конец последовательности, с огибающей, построен-ной по настоящим отсчетам сигнала.
4.5. Фильтрация с помощью ДПФ
1. Открыть файл noise_test.m. Задать указанное в вариантезначение начального состояния ГПСЧ.
2. В скрипте noise_test на вход ДПФ подается сигнал из сум-мы двух синусоид с частотами f1 и f2 (f1 > f2 > 150 Гц) и«коричневого» шума.
3. Требуется с помощью обратного ДПФ восстановить исход-ный сигнал, максимально отфильтровав низкочастотнуюпомеху.
5. Защита эксперимента1. Выразить коэффициенты ДПФ циклически сдвинутой по-
следовательности через коэффициенты ДПФ исходной.Сравнить с экспериментальными результатами.
2. Как по номеру отсчета ДПФ определить частоту в Гц?
3. От чего зависит разрешение по частоте для ДПФ?
4. Как связаны ДПФ и ДВПФ? Продемонстрировать эту связьна полученных графиках.
5. Почему выходной сигнал после фильтрации отличается отисходного? Как можно улучшить фильтрацию? Возможноли добиться точного совпадения выходного и исходного сиг-налов?
6. Контрольные вопросы1. Запишите формулы ДПФ.
2. Основные свойства ДПФ.
3. Циклический сдвиг сигнала и его спектра при ДПФ.
12
4. Необходимость применения оконных функций при ДПФ.
5. Прямоугольное окно, треугольное окно, окно Хана.
6. Частотная ось ДПФ. Разрешение по частоте, дискретнаянормированная частота, связь с частотами в Гц (рад/с).
7. Два пути перехода от непрерывному к дискретному преоб-разованию Фурье.
8. Соответствие между ДПФ, рядом Фурье и непрерывнымпреобразованием Фурье.
9. Реакция ДПФ-анализатора на комплексный гармоническийсигнал. Бины ДПФ.
10. ДПФ как набор полосовых фильтров. Импульсная и частот-ная характеристика таких фильтров.
11. Линейная и циклическая свертки дискретных сигналов.
12. Алгоритм БПФ. Выигрыш применения БПФ при вычисле-нии свертки.
13. Смысл ДПФ для периодической последовательности.
14. Смысл ДПФ для конечной последовательности.
15. Расчет амплитудного и фазового спектров периодическойпоследовательности с помощью ДПФ.
16. Восстановление аналогового сигнала с финитным спектромпо отсчетам ДПФ и на основе ряда Котельникова.
17. Связь ДПФ и ДВПФ.
18. Влияние добавления нулей к исходной последовательностина разрешение по частое в ДПФ.
19. Вычисление спектральной плотности в L точках на основеДПФ при L > N .
20. Фильтрация с помощью ДПФ.
13
7. ЗадачиЗадачи, помеченные М, нужно промоделировать на MATLAB
или GNU Octave.
1. (M) Пусть x(k)↔ X(n) – пара N-точечного ДПФ, N – чет-ное.
• Показать, что X(N2
) = 0, если x(k) – симметричная наинтервале N последовательность, т.е. x(k) = x(N − 1−k).• Показать, что X(0) = 0, если x(k) – антисимметричнаяна интервалеN последовательность, т.е. x(k) = −x(N−1− k).• Показать, что X(2r) = 0, r = 0, 1, . . . , R−1, R = N
2, если
x(k) = −x(k +R).
2. (М) Пусть x(k) ↔ X(n) – пара N-точечного ДПФ. Образу-ем новую последовательность y(l) = x(5l), 0 ≤ l ≤ N
5− 1.
Выразить коэффициенты ДПФ Y(m) через X(n).
3. Пусть x(k) ↔ X(n) – пара 2N-точечного ДПФ. Образуемновые последовательности
g(l) = x(2l)↔ G(m)h(l) = x(2l + 1)↔ H(m)
0 ≤ l ≤ N − 1, 0 ≤ m ≤ N − 1
Выразить X(n) через G(m) и H(m).
4. Пусть имеется две действительные последовательности a(k)и b(k) длиной в N отсчётов (k = 0, 1, 2, . . . , N−1). Образуемсовмещённую последовательность c(k) = a(k) + jb(k). Вы-числить все коэффициенты ДПФ A(n) и B(n) последова-тельностей a(k) и b(k) из результатов преобразования C(n)совмещённой последовательности c(k).
5. (М) Пусть x(k)↔ X(n) – пара N-точечного ДПФ. Образуемновую последовательность y(l) длинной LN (0 ≤ l ≤ LN −1) следующим образом:
y(l) =N−1∑k=0
x(k)1(l − kL),
14
где
1(l − kL) ={
1, l = kL0, l 6= kL
и L – положительное целое число. Последовательность y(l)получается из x(k) изменением ее масштаба по оси време-ни (между каждой парой отсчетов x(k) вставляется L − 1нулей). Выразить NL-точечное ДПФ Y (m) последователь-ности y(l) через X(n).
6. (М) Показать, что для действительной последовательностиx(k) фазовый спектр является нечётной функцией относи-тельно точки k = N
2, т.е.
ϕ(N
2+ l) = −ϕ(N
2− l)
7. (М) Вычислить коэффициенты ДПФ X(n) для
x(k) = cos(2π
Nrk), 0 ≤ k ≤ N − 1
для фиксированного значения r из диапазона 0 ≤ r ≤ N−1.
8. (М) Пусть Y (n) обозначаетMN -точечное ДПФN -точечнойпоследовательности x(k), дополненной (M − 1)N нулями.Показать, что N -точечное ДПФ X(n) может быть полученоиз Y (n) следующим образом:
X(n) = MY (nM), 0 ≤ n ≤ N − 1.
9. (М) Определить ДПФN -точечной последовательности (N –четное):
x(k) =
{1, k = 2m0, k = 2m+ 1
10. (М) Определить ДПФN -точечной последовательности (N –четное):
x(k) =
{1, 0 ≤ k ≤ N
2− 1
0, N2≤ k ≤ N − 1
15
11. (М) Пусть X(n) – четырехточечное ДПФ последовательно-сти
x(k) = [1, 3/4, 1/2, 1/4].
Изобразить последовательность y(k), ДПФ которой имеетвид
Y (n) = exp(−j 2π4
3n)X(n)
12. Действительный сигнал x(t) дискретизуется с частотой fd =5 кГц так, что наложение отсутствует. Полученная такимобразом последовательность x(k) содержит N = 512 отсче-тов. По этой последовательности вычисляется 512-точечноеДПФ. Известно, что X(11) = 2000(1 + j).Что можно сказать о других X(n) и о значениях ДВПФ насоответствующих частотах?
13. Вещественный сигнал x(t) с полосой 10 кГц дескритизуетсяв соответствие с теоремой отчетов, в результате получаетсяпоследовательность x(k). Пусть X(n) – 1000-точечное ДПФпоследовательности x(k). Какой непрерывной частоте соот-ветствуют индексы n = 150 и n = 800 в последовательностиX(n)?
14. Вещественный сигнал x(t) с полосой 10 кГц дескритизуетсяв соответствие с теоремой отчетов, в результате получает-ся последовательность x(k) длинной в N = 1000 отсчетов.Пусть X(n) – 1000-точечное ДПФ последовательности x(k).Известны два значения
X(900) = 1B,X(420) = 5B.
Найти все значения ДВПФ, которые можно определить.
15. Последовательность x(k) = x(x∆t) получена в резуль-тате дискретизации непрерывного сигнала x(t) с шагом∆t. Пусть верхняя частота спектра непрерывного сигна-ла 100кГц. Для оценки спекта вычисляется 1024-точечноеДПФ X(n) последовательности x(k). При каком наимень-шем шаге ∆t расстояние между непрерывными частотами,соответствующими отсчетам ДПФ, не превышает 1 кГц?
16
16. Последовательность x(k) = x(x∆t) получена в результатедискретизации входного сигнала x(t) шагом ∆t = 50 мкс.Пусть X(n) – 8192-точечное ДПФ последовательности x(k).Определить расстояние между непрерывными частотами,соответствующими отсчетам ДПФ.
17. Вещественный сигнал x(t) с полосой 10 кГц дескритизу-ется в соответствие с теоремой отчетов с шагом ∆t, в ре-зультате получается последовательность x(k). Для иссле-дования спектральных свойств сигнала вычисляется N -точечное ДПФ, где N = 2ν , ν – натуральное число. Опреде-лить минимальное значение N и допустимые пределы ча-стоты дискретизации
fdmin <1
∆t< fdmax,
при которых анализ возможен, а расстояние между отсче-тами ДПФ будет меньше 5 Гц (по эквивалентным непре-рывным отсчетам).
18. (М) Сигнал x(t) = cos(ω0t) дискретизуется с с шагом ∆t.Из полученной последовательности вырезается отрезок x(k)длиной в N отсчетов. Для проведения спектрального ана-лиза вычисляется N -точечное ДПФ. Для фиксированныхω0, N, n0 подобрать такое ∆t, чтобы X(n0) 6= 0, X(N−n0) 6=0, а остальные X(n) равны 0. Единственное ли это значение∆t?
19. (М) Пусть x(k) – периодическая последовательность с пе-риодом N . Тогда 3N тоже можно считать ее периодом.Пусть X(n) – коэффициент ДПФ N -периодической после-довательности, а X3(n) – коэффициент 3N -периодическойпоследовательности. Выразить X3(n) через X(n). Прове-рить на последовательности
x(k) = [1; 2], N = 2.
20. Рассмотрим последовательность x(k) с периодом N = 10:
x(k) =
{1, 0 ≤ k ≤ N
2− 1
0, N2≤ k ≤ N − 1
17
Найти связь между коэффициентами ДПФ и ДВПФ одногопериода изобразить по модулю.
21. (М) Рассмотрим последовательность x(k) с периодом N =10:
x(k) =
{1, 0 ≤ k ≤ N
2− 1
0, N2≤ k ≤ N − 1
Найти ДПФ этой последовательности. Изобразить модулии фазы коэффициентов ДПФ.
22. Рассмотрим конечную последовательность из пяти отсче-тов прямоугольного импульса x(k) = [1, 1, 1, 1, 1]. Найти иизобразить по модулю ДВПФ этой последовательности Дляпериодического повторения этой последовательности с пе-риодом N = 5
y(k) =∞∑
r=−∞
x(k + rN)
найти и изобразить по модулю ДВПФ и ДПФ.
8. Работа в среде GNU Octave илиMATLAB
Лабораторную работу можно выполнять как в средеMATLAB, так и в GNU Octave. Далее по тексту GNU Octaveи MATLAB можно считать синонимами.
8.1. Рабочая директория
В среде GNU Octave можно использовать не только встроен-ные команды, но и расширять функционал с помощью допол-нительных файлов-скриптов (*.m). Без указания полного путив среде доступны файлы из так называемой «рабочей директо-рии». Сменить ее можно с помощью команды cd, а также ис-пользуя соответствующие кнопки в панели инструментов.
8.2. Рабочая область
В ходе работы все вычисленные ранее переменные сохраня-ются в так называемой «рабочей области». Посмотреть содер-жимое «рабоче области» можно как в отдельно окне, так и с
18
помощью команды who. Очистить рабочую область можно ко-мандой clear.
8.3. Язык сценариев (m-файлы)
8.3.1. Переменные
Имена переменных могут состоять из произвольных букв,цифр и знаков «_». Не рекомендуется использовать в качествеимен переменных имена стандартных функций, а также именастандартных переменных:
• i или j – мнимая единица
• inf – неопределенность 1/0
• NaN – неопределенность 0/0
• ans – результат последней операции.
• pi – число Пи
• rand – псевдослучайное число из интервала [0;1]
• eps – текущая относительная точность вычислений
8.3.2. Матрицы
Матрицы – основной объект, с которым работает GNU Octave.Вектор – матрица размерности 1хN или Nх1. Скаляр – матрица1х1. В записи размерности матрицы «MxN» М обозначает числострок, N – число столбцов.
Скаляры создаются с помощью оператора присваивания:
scalar = 1.234;
Для ввода матриц большей размерности используются симво-лы «[]». Матрицы задаются построчно, элементы одной строкиразделяются пробелом, а строки – символом «;». Например, мат-рицы можно задать так:
matrix = [1 2;3 4; 5 6]; % матрица 3х2vector = [1 2 3]; %вектор — строкаvector1 = [1;2;3]; %вектор – столбец
19
Большие матрицы можно формировать из матриц меньшейразмерности. Например, используя матрицу и вектор, заданныевыше, команда a = [matrix vector1; 0 1 2] определяет матрицу [12 1; 3 4 2; 5 6 3; 0 1 2].
Для обращения к элементам матрицы используются «()».Чтобы получить элемент из строки i и столбца j используетсязапись A(i,j). Нумерация строк и столбцов начинается с едини-цы. Можно обращаться не только к отдельным элементам мат-риц, но также получить целые строки и столбцы. A(:,j) – j-ыйвектор-столбец, A(i,:) – i-ая строка.
Для создания вектора-строки из последовательных элементовесть специальный оператор перечисления «:»
u = start : step : end;
В результате в u будет вектор, состоящий из элементов ариф-метической прогрессии, первый элемент которой равен start, ашаг – step. Последний элемент вектора будет максимальным чле-ном прогрессии, который не превышает end. Если step = 1, томожно его не указывать: v = 1:5 задает вектор [1 2 3 4 5]
Для матриц доступны следующие полезный функции:
• оператор «’» – транспонирует матрицу
• size(A) – определяет размеры матрицы, возвращает вектор1х2 вида [M, N], где М – число строк, N – число столбцов.
• length(A) – максимальный из размеров матрицы А. Удобноопределять число элементов в векторе.
8.3.3. Арифметические операции
Т.к. все объекты в GNU Octave – это матрицы, то и операциис ними соответствуют операциям с матрицами. Ниже приведенсписок основных операций:
• = – присваивание;
• + – сложение;
• * – умножение;
20
• \– деление слева (X = A \B – результат решения уравненияA ·X = B,X = A−1 ·B);
• / – деление справа ( X = A/B – результат решения уравне-ния X ·B = A,X = A ·B−1);
• ^– возведение в степень;
• .* – поэлементное умножение;
• .^– поэлементное возведение в степень;
• ./ – поэлементное деление.
Следуют помнить, что операции подчиняются требованиямтрадиционной матричной алгебры. GNU Octave автоматическипроверяет размерность операндов.
8.4. Сценарии
Сценарий записываются в текстовых файлах с расширением«.m». В этом файле перечислена последовательность операций,так, как если бы она же выполнялась посредством ввода отдель-ных команд в командной строке. Все переменные, объявленные всценарии, сохраняются в рабочей области и доступны для даль-нейшего использования в командной строке или других сцена-риях. Чтобы вызвать сценарий, нужно набрать имя его файлабез расширения в командной строке. Например, запуск сцена-рия my_script.m из рабочей директории осуществляется вводомmy_script в окне команд.
8.5. Функции
Чтобы не засорять рабочую область лишними переменными,часть кода сценариев можно оформить в виде функций. Функциитакже записываются в текстовых файлах с расширением «.m».В отличие от сценариев в файле функции первым должен бытьспециальный оператор, содержащей описание функции:
function[out_params] = function_name(in_params)
21
Это означает, что в файле записана функция с именемfunction_name, у которой есть входные аргументы in_params,а результат сохраняется в выходных переменных out_params.
Завершается описание функции ключевым словом end.Название функции должно совпадать с названием файла, в
котором она описана.Входные аргументы передаются в функцию «по значению».
Любые изменения этих переменных в теле функции не отразятсяна их значениях в рабочей области.
Чтобы вызвать функцию, нужно указать ее имя и список ар-гументов в круглых скобках:
val = function_name(some_arg);
Если указаны несколько входных/выходных значений:
function[out1out2] = function_name(in1, in2)
то функцию можно вызывать так:
[a1 a2] = function_name(b1, b2);
8.6. Некоторые стандартные операции
В стандартной поставке GNU Octave доступны основные ма-тематический функции (exp, cos, sin, acos, atan, sqrt, abs, log,log10 и т.п.)
Для округления можно пользоваться функциями round(x)(до ближайшего целого), fix(x) (до целого в сторону ну-ля), ceil(x)/floor(x) (до ближайшего целого в сторону увеличе-ния/уменьшения).
Для работы с комплексными числами доступны следующиефункции:
• arg(x) – аргумент комплексного числа;
• abs(x) – модуль комплексного числа;
• real(x) – действительная часть;
• imag(x) – мнимая часть;
• conj(x) – комплексное сопряжение.
22
Иногда требуется сформировать вектора или матрицы опре-деленного вида. Для этого есть следующие функции:
• linspace(start, end, N) – формирует вектор-строку из N эле-ментов равномерно расположенных между start и end.
• linspace(start, end, N) – формирует вектор-строку из N эле-ментов равномерно логарифмически между start и end.
• zeros(N, M) – создает нулевую матрицу размером NxM.Вектор-строку из M нулей можно получить с помощью ко-манды zeros(1, M).
• ones(N, M) – создает матрицу размером NxM, все элементыкоторой равны единице. Вектор-строку из M единиц можнополучить с помощью команды ones(1, M).
• rand(N,M) – создает матрицу размером NxM, все элементыкоторой – случайные числа, равномерно распределенные наинтервале (0.0, 1.0).
8.7. Рисование графиков
Команда figure создает новое окно для рисования графиков.Все команды рисования влияют на последнее созданное окно.
Непрерывные графики выводятся с помощью командыplot(x,y). Аргументами могут быть:
• вектора одинаковой размерности, x – значения по оси абс-цисс, y – значения по оси ординат;
• матрицы одинаковой размерности: для каждого столбца изx выбирается соответствующий столбец из y и строится гра-фик, как в случае выше;
• x - вектор, а y – матрица (или наоборот), такие, что дли-на вектора совпадает с одной из размерностей матрицы:для каждого столбца (строки) матрицы строится отдельныйграфик, где в качестве значений для второй оси использу-ются элементы вектора
23
Также можно задать несколько пар аргументов (x,y), чтобыпостроить несколько графиков на одном рисунке (plot(x1,y1,x2,y2))
Если нужно нарисовать график отдельных отсчетов, то сле-дует использовать команду stem. Ее аргументы аналогичны ко-манде plot.
Повторные вызовы команд plot или stem заменяют графикв последнем окне, созданном командой figure. Для того, чтобыотобразить в одном окне несколько отдельных графиков, суще-ствует команда subplot(i,j, p). Эта команда делит окно выводаграфиков на сетку из i строк и j столбцов. Параметр p выбираетобласть окна, в которой следующая команда plot или stem бу-дет осуществлять рисование графика. Области нумеруются сле-ва направо сверху вниз (для вывода четырех графиков (i,j – p):1,1 – 1, 1,2 – 2, 2,1 – 3, 2,2 – 4).
Литература1.РоманюкЮ.А. Свойства и преобразования дискретных сиг-
налов // Основы цифровой обработки сигналов: учебное посо-бие. –M.: МФТИ, 2007. Ч. 1.
2.РоманюкЮ.А. Дискретное преобразование Фурье в цифро-вом спектральном анализе учебное пособие. –M.: МФТИ, 2007.
24
Цель работыТеоретическое введениеДискретное преобразование ФурьеСвойства и теоремы ДПФСоответствие между ДПФ, рядом Фурье и преобразованием ФурьеСвязь ДПФ и ДВПФИнтерполяция добавлением нулевых отсчётовВременная и частотная оси ДПФ
Задание к допускуЗадание к выполнениюСимметрия ДПФЦиклический сдвигЧастотная ось ДПФДПФ и ДВПФФильтрация с помощью ДПФ
Защита экспериментаКонтрольные вопросыЗадачиРабота в среде GNU Octave или MATLABРабочая директорияРабочая областьЯзык сценариев (m-файлы)ПеременныеМатрицыАрифметические операции
СценарииФункцииНекоторые стандартные операцииРисование графиков
Литература
Top Related