Скачиваний:
26
Добавлен:
01.05.2014
Размер:
291.84 Кб
Скачать

Уменьшение дефектов при расчете дпф

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

.

Роль весовой функции в этой формуле можно рассматривать с различных точек зрения. Сначала проанализируем ситуацию во временной области. Если мы используем весовую функцию, которая имеет максимум в середине (при k = N/2) и плавно спадает к краям (k = 0 и k = N - 1), то это приведет к уменьшению растекания спектра.

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

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

Для иллюстрации сказанного продемонстрируем применение окна Хэмминга при расчете ДПФ. Для этого возьмем функцию косинуса частоты 5,5, умножим ее на окно Хэмминга и рассчитаем для получившегося сигнала ДПФ (Рис. 4).

Рис. 4. ДПФ для косинуса с использованием окна Хэмминга.

Представленный на Рис. 4спектр существенно лучше спектра наРис. 2, так как значительно меньшее количество каналов ДПФ реагирует на частоту нашего сигнала (точнее – на эту частоту реагирую лишь те некоторые каналы, которые непосредственно прилегают к «столбику», символизирующему реакцию 5-го канала), а те каналы, которые все же реагирую на нее, дают относительно небольшие спектральные «столбики» на графике.

Теперь, как и в примере выше, сформируем семейство гармонических сигналов (пусть это будут все те же функции косинуса). Для каждого сигнала из семейства выполним ДПФ. Наша цель здесь – построить зависимость амплитуды некоторого столбца в спектре от частоты подаваемого сигнала из созданного семейства гармонических сигналов. Для определенности будем подавать сигналы диапазона 10-20 Гц с шагом 0,1 Гц. А для дальнейшего исследования выберем 15-й и 16-й столбцы спектра. Графики указанных зависимостей приведены на Рис. 5(для 15-го столбца – график выделен сплошной линией, для 16-го столбца – пунктирной линией).

Рис. 5.Зависимость амплитуды 15-го и 16-го столбцов в спектре от частоты

подаваемого сигнала при использовании окна Хэмминга.

Действительно, окно Хэмминга помогло нам добиться лучших результатов – боковые лепестки на Рис.5 практически отсутствуют (в сравнении сРис. 3). Но при этом заметим, что ширина больших лепестков увеличилась в два раза.

Приложение: исходный код matlab

% Для чистоты наших экспериментов обнулим рабочую область и окно кода.

clear all; clc;

%--------------------------------------------------------------------

% Создадим сигнал c целым значение частоты.

%--------------------------------------------------------------------

t = 0:2*pi/999:2*pi;

Signal = cos(5*t);

% Спектр после быстрого преобразования Фурье.

Fourier_Transformation = fft(Signal);

figure;

bar(abs(Fourier_Transformation), 'k');

%--------------------------------------------------------------------

% Создадим сигнал c дробным значением частоты.

%--------------------------------------------------------------------

Signal = cos(5.5*t);

% Спектр после быстрого преобразования Фурье.

Fourier_Transformation = fft(Signal);

figure;

bar(abs(Fourier_Transformation), 'k');

%--------------------------------------------------------------------

% Смотрим отклики столбцов 15 и 16 Гц при подаче сигналов частоты

% 10..20 Гц с шагом 0.1 Гц.

%--------------------------------------------------------------------

for i = 0:100

Signal = cos((10+i/10)*t);

Abs_Fourier_Transformation = abs(fft(Signal));

First_Response(i+1) = Abs_Fourier_Transformation(15);

Second_Response(i+1) = Abs_Fourier_Transformation(16);

end

% Нарисуем на одном поле оба графика для последующего сравнения.

figure;

plot(First_Response, 'k'); % график обведен сплошной линией.

hold on;

plot(Second_Response, 'k:'); % график обведен пунктирной линией.

hold off;

clear First_Response Second_Response Signal;

clear Abs_Fourier_Transformation;

%--------------------------------------------------------------------

% Влияние окна Хэмминга на наш сигнал.

%--------------------------------------------------------------------

Signal_With_Hamming = cos(5.5*t).*(hamming(1000)');

figure;

plot(Signal_With_Hamming, 'k');

%--------------------------------------------------------------------

% Смотрим на "размытие" спектра.

%--------------------------------------------------------------------

Fourier_Transformation = abs(fft(Signal_With_Hamming));

figure;

bar(abs(Fourier_Transformation), 'k');

clear Signal_With_Hamming Fourier_Transformation;

%--------------------------------------------------------------------

% Смотрим отклики столбцов 15 и 16 Гц при подаче сигналов 10..20 Гц

% с шагом 0.1 Гц и использовании Хемминга.

% Боковых лепестков на графике почти нет, но зато основные -

% получились шире.

%--------------------------------------------------------------------

for i = 0:100

Signal_With_Hamming = sin((10+i/10)*t).*(hamming(1000)');

Abs_Fourier_Transformation = abs(fft(Signal_With_Hamming));

First_Response(i+1) = Abs_Fourier_Transformation(15);

Second_Response(i+1) = Abs_Fourier_Transformation(16);

end

% Нарисуем на одном поле оба графика для последующего сравнения.

figure;

plot(First_Response, 'k'); % график обведен сплошной линией.

hold on;

plot(Second_Response, 'k:'); % график обведен пунктирной линией.

hold off;

Соседние файлы в папке Лабораторная работа 31
  • #
    01.05.2014291.84 Кб26MOTS_Lab#3.doc
  • #
    01.05.20143.75 Кб20Чистовой вариант кода.m