
- •Пояснительная записка
- •Исходные данные
- •Обозначения и сокращения
- •1 Исследование параметров случайного процесса
- •1.1 Расчет числовых характеристик
- •1.2 Спектральный анализ сигнала
- •2 Выбор метода предварительной обработки сигнала
- •1.Спецификация требований к фильтру
- •2.1 Спецификация требований к фильтру
- •2.2 Вычисление коэффициентов фильтра
- •2.3 Реализация фильтра в среде Matlab
- •3 Разработка алгоритма обнаружения сигнала
- •4 Разработка блок-схемы устройства цифровой обработки сигнала
- •4.1 Расчет параметров аналого-цифрового тракта:
- •4.2 Расчет объема внутренней памяти для хранения данных
- •Основные результаты и выводы.
- •Список литературы
2.2 Вычисление коэффициентов фильтра
Стандартный КИХ-фильтр характеризуется следующими уравнениями:
|
(2.4, а) |
|
(2.5, б) |
где
-
коэффициент фильтра,k-номер
фильтра,n-номер
массива
Для
расчета необходимо сформировать вектор
частотной характеристики
,
вектор коэффициентов передачи
в частотной области, вектор допустимых
отклонений
амплитудно-частотной характеристики
фильтра от заданной.
Вектор формируется по значениям из таблицы 2.1 в следующем виде:
.
Вектор коэффициентов передачи строится на основе таблицы 1.2:
.
Вектор коэффициентов отклонений строится на основе таблицы 2.2:
.
Для оценки требуемого порядка фильтра в среде Matlab используется функция firpmord.
Функции firpmord позволяет найти приблизительный порядок фильтра, границы полосы частот, на основе входных данных.
Для синтеза фильтра используется функция firpm.
Функции firpm позволяет рассчитать необходимые характеристики фильтров и построить АЧХ фильтра, представленного ниже.
Текст программы Matlab для расчета коэффициентов фильтра и построения графиков на рисунках 2.2. % Расчет коэффициентов фильтра в среде Matlab: fp=60; fs=110; f1=2658; f2=4772; fpl1=f1-fp; fph1=f1+fp; fsl1=fpl1-fs; fsh1=fs+fph1; fpl2=f2-fp; fph2=f2+fp; fsl2=fpl2-fs; fsh2=fs+fph2; As=50; Ap=0.6; sigma_p=(10^(Ap/20)) - 1; sigma_s=10^(-As/20); F=[fsl1 fpl1 fph1 fsh1 fsl2 fpl2 fph2 fsh2]; A = [0 1 0 1 0 ]; D=[sigma_s sigma_p sigma_s sigma_p sigma_s ]; [n, F0, A0, W] = firpmord(F, A, D, 44100); b_filt = firpm(n, F0, A0, W); % Построение графика АЧХ фильтра: freqz(b_filt, 1, 1024, 44100); % Сохранение коэффициентов фильтра: save('b_filt.mat', 'b_filt'); |
АЧХ и ФЧХ фильтра представлены на рисунке 2.2.
Рисунок 2.1 – АЧХ и ФЧХ фильтра
Для построения идеальной характеристики фильтра используются полученные ранее значения векторов F, b. Дополнительно создается вектор Af – имитирует АЧХ идеального фильтра.
Вектор
F = [
];
Вектор Af = [0 0 1 1 0 0 1 1 0];
где fs – начальное значение; fe – значение частоты, превышающее значение fh.
in = load('b_filt.mat'); b_filt = in. b_filt; Af = [0 0 1 1 0 0 1 1 0 0]; F = [fsl1 fpl1 fpl1 fph1 fph1 fpl2 fpl2 fph2 fph2 fsh2]; nf = 1024; % количество точек аппроксимации [h, w] = freqz(b_filt, 1, nf); plot(F, Af, 'color', 'r'); hold on; f = 0:(44100/2)/nf: 44100/2-1; plot(f, abs(h), 'color', 'b'); title ('Характеристика полосового фильтра'); xlabel ('Частота,Гц'); ylabel ('Коэффициент пропускания'); xlim( [0 5000] ); hold off; legend('Идеальный', 'Результат расчета'); |
Рисунок 2.2 – Характеристика полосового фильтра
2.3 Реализация фильтра в среде Matlab
Результат фильтрации с помощью функции
s_out =filter(b_filt,1,s_in) представлен на рисунке 2.5, где: b_filt – коэффициенты фильтра; s_in – отсчеты входного сигнала; s_out - результат фильтрации.
Рисунок 2.3 – Результат фильтрации
Текст программы для фильтрации сигнала в среде Matlab и построение графиков на рисунке 2.5. fx=load('Data8.txt'); N=length(fx); save('fx.mat') data = load('fx.mat'); % считывание исходного сигнала из файла s_in = data.fx; fd=44100; dt=1/fd; T=dt*(N-1); x=0:dt:T; k = load('b_filt.mat'); % весовые коэффициенты фильтра хранятся в векторе b_filt s_out =filter(k.b_filt,1,s_in); % фильтрация исходного сигнала subplot(2,1,1),plot(x,fx); xlabel('Время,с') ylabel('Амплитуда,В') title ('Результат фильтрации'); hold on subplot(2,1,1),plot(x,s_out,'r'); legend('Исходный сигнал', 'Отфильтрованный сигнал'); grid; Y = fft(s_out); % Преобразование Фурье f = 1/T * (0:N/2-1); % Ось частот Y = 2 * abs(Y(1:N/2)) / N; % Модуль |Y| subplot(2,1,2),plot(f,Y);grid; xlim([0 60000]); xlabel('Частота, Гц'); ylabel('|Y|'); title ('Спектр отфильтрованного сигнала'); |
По спектру отфильтрованного сигнала определяется значения максимумов. Занести значения в таблицу 2.3.
Таблица 2.3 – Таблица гармоник отфильтрованного сигнала
№ |
Значение, Гц |
Амплитуда |
f1 |
2658 |
0,001265 |
f2 |
4772 |
0,002217 |