- •Обозначения и сокращения
- •Оглавление
- •1.Исследование параметров случайного процесса 3
- •2. Выбор метода предварительной обработки сигнала 10
- •4.Разработка блок-схемы устройства цифровой обработки сигнала 23
- •1 Исследование параметров случайного процесса
- •1.1 Расчет числовых характеристик
- •1.1 Расчет числовых характеристик
- •1.2 Спектральный анализ сигнала
- •2 Выбор метода предварительной обработки сигнала
- •2.1 Этапы разработки цифрового фильтра
- •2.2 Спецификация требований к фильтру
- •2.3 Вычисление коэффициентов фильтра
- •2.4 Реализация фильтра в среде Matlab
- •3 Разработка алгоритма обнаружения сигнала
- •4 Разработка блок-схемы устройства цифровой обработки сигнала
- •4.1 Расчет параметров аналого-цифрового тракта
- •4.2 Расчет объема внутренней памяти для хранения данных
- •Основные результаты и выводы
- •Список литературы
- •3. Цифровая обработка сигналов. Автор: Сергиенко Александр Борисович.
2.4 Реализация фильтра в среде Matlab
Основными функциями для осуществления линейной дискретной фильтрации в Matlab являются функции filter, fftfilt и filtfilt. Функция filter реализует обычную одномерную дискретную фильтрацию. Функция fftfilt реализует дискретную фильтрацию с использованием быстрого преобразования Фурье (БПФ) в сочетании с разделением сигнала на блоки. Таким способом могут быть реализованы только нерекурсивные фильтры. Функция filtfilt позволяет компенсировать фазовый сдвиг, вносимый при обычной фильтрации (иными словами, данная функция реализует фильтрацию без внесения временной задержки). Осуществляется это путем двунаправленной обработки сигнала. Первый проход фильтрации осуществляется обычным образом, а затем полученный выходной сигнал фильтруется второй раз - от конца к началу. За счет этого происходит компенсация фазовых сдвигов, а результирующий порядок фильтра увеличивается в два раза.
Основная функций, реализующая дискретную фильтрацию в MATLAB, носит имя filter. В простейших виде она имеет следующий синтаксис:
y=filter(b, a, x);
Здесь b-вектор коэффициентов нерекурсивной части фильтра (числителя функции передачи), а-вектор коэффициентов рекурсивной части фильтра(знаменателя функции передачи), х-входной сигнал.
Результат фильтрации с помощью функций s_out = fftfilt(b_filt, s_in) представлен на рисунке 2.4.
Рисунок 2.4 – Результат фильтрации
По спектру отфильтрованного сигнала определены значения максимумов и занесены в таблицу 2.3.
Таблица 2.3 – Таблица гармоник отфильтрованного сигнала
№ |
Амплитуда, |Y| |
Значение, Гц |
f1 |
0,038 |
1568 |
f2 |
0,041 |
2105 |
Программа для фильтрация сигнала и построения графика спектра отфильтрованного сигнала в среде Matlab представленного на рис 2.4
fx=load('Data4.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 10000]); ylim([0 0.03]); xlabel('Частота, Гц'); ylabel('|Y|'); title ('Спектр отфильтрованного сигнала'); |
В данном пункте получен результат фильтрации с помощью функци [filter]. Далее был получен спектр отфильтрованного сигнала, на котором изображены полезные гармоники.
