Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
цос / Лаб_раб_№7.doc
Скачиваний:
50
Добавлен:
02.02.2015
Размер:
861.7 Кб
Скачать

Лабораторная работа № 7 линейная фильтрация

Цель работы: закрепление теоретических знаний связанных с фильтрацией сигналов

Необходимые теоретические сведения

Выходной сигнал фильтра можно найти, используя функцию filter.

Она реализует алгоритм цифровой фильтрации, соответствующий транспонированной структуре фильтра (direct form II transposed)

y= filter (b, a, s);

где b и a – векторы коэффициентов числителя и знаменателя передаточной функции фильтра; s – вектор входного сигнала; y – вектор выходного сигнала. Рассчитав выходной сигнал, можно построить графики входного и выходного сигналов:

plot (t, s, ‘r’, t, y, ‘g’)

Входной сигнал будет отображён непрерывной линией красного цвета, а выходной – непрерывной линией зелёного цвета.

При использовании функции stem лучше вывести графики отдельно:

subplot (2,1,1)

stem (t, s, ‘.r’)

subplot (2, 1, 2)

stem (t, y, ‘.b’)

Цифровую фильтрацию можно осуществить как операцию свёртки входного сигнала и импульсной характеристики фильтра. Для этого сначала нужно получить импульсную характеристику фильтра:

h= impz (b, a);

где b и a – коэффициенты полиномов числителя и знаменателя передаточной функции, h – вектор отсчётов импульсной характеристики. Количество отсчётов рассчитывается автоматически и зависит от поведения импульсной характеристики. Для явного задания количества расчётных точек n нужно ввести оператор:

h= impz (b, a, n);

Для вывода графика импульсной характеристики не нужно указывать выходной параметр и ставить точку с запятой:

impz (b, a)

Рассчитав импульсную характеристику, можно найти выходной сигнал фильтра методом свёртки:

y= conv (s, h);

где s – вектор входного сигнала, h – вектор импульсной характеристики, y – вектор выходного сигнала.

Далее следует построить графики входного и выходного сигналов.

Еще один способ фильтрации в частотной области с использованием быстрого преобразования Фурье (БПФ) выполняется следующим образом. В соответствии со спектральным методом спектр выходного сигнала равен произведению спектра входного сигнала и комплексной частотной характеристики фильтра. Спектр вычисляется путём применения к сигналу, заданному в виде последовательности отсчётов, дискретного преобразования Фурье (ДПФ). В MatLab алгоритм ДПФ применяется в форме БПФ (FFT –Fast Fourier Transform). Для осуществления фильтрации в частотной области задаются операторы (подразумевается, что сигнал s, частота дискретизации Fs, а также коэффициенты фильтра b и a определены ранее:

K= freqz (b, a, 512);

S= fft (s, 1024);

Y= S(1:512) .*K;

y= ifft (Y);

Нужно следить, чтобы суммарное количество отсчётов сигнала s и импульсной характеристики h = impz (b, a) не превышало 1024. В противном случае нужно использовать функцию fft, задавая более высокую размерность преобразования. Тогда большее количество точек n надо задавать при расчёте частотной характеристики фильтра:

K = freqz (b, a, n);

где n = N/2, где N – размерность БПФ. Помимо графиков сигналов можно вывести спектры входного и выходного сигналов и частотную характеристику фильтра:

f = (0:511)/512*(Fs/2);

subplot (3,1,1)

stem (f, abs(S(1:512)))

subplot (3,1,2)

plot (f, abs(K))

subplot (3,1,3)

stem (f, abs(Y(1:512)))

Вместо функции stem можно использовать функцию plot, тогда получим непрерывные спектры. Если имеется необходимость совместить все три графика, то можно использовать операторы hold on и hold off вместо операторов subplot. Для различения графиков нужно задать различный цвети (или) тип линии.

Блочную фильтрацию с помощью БПФ (сигнал разбивается на блоки по N отсчётов, где N – размерность БПФ) можно также реализовать, используя функцию fftfilt:

y = fftfilt (h, s, N);

где h – вектор импульсной характеристики фильтра, s – вектор входного сигнала, N – размерность БПФ.

Рассмотрим пример. Пусть необходимо смоделировать с помощью программы MatLab сложный сигнал следующего вида:

S(t)=Y(t)+X(t)+d(t),

где Y(t)=A·sin(t)-синусоидальный сигнал;

X(t) – треугольный импульс;

d(t) – белый Гауссовский шум.

Для генерации случайной последовательности с равномерным законом

распределения вероятностей служит функция rand, с нормальным законом распределения – функция randn.

Fs= 1e3;

t=0:1/Fs:1;

sigma= 2;

d= sigma * randn ( length(t), 1);

sn= s+d;

С помощью дискретных фильтров Чебышева первого (пульсации в полосе пропускания) и второго (пульсации в полосе задерживания) рода выделить из сложного сигнала треугольный, отфильтровав, таким образом, синусоидальную составляющую и белый Гауссовский шум с нулевым математическим ожиданием и дисперсией ϭ2=4.

t=0:0.1:25; % определение временного интервала

y=0.5*sin(25*t); % определение синусоидального сигнала

x=4*sawtooth(t,0.5); % определение треугольного сигнала

d=0.1*randn(251,1); % задание белого Гауссовского шума

plot(t,x,t,y,t,d), grid % вывод 3-х составляющих сигнала на экран

xlabel ('Время'); % подпись оси Х («Время»)

ylabel ('Амплитуда'); % подпись оси Y («Амплитуда»)

s=x+y+d; % синтез сложного сигнала

plot(t,s), grid; % вывод сложного сигнала на экран

xlabel ('Время'); % подпись оси Х («Время»)

ylabel ('Амплитуда'); % подпись оси Y («Амплитуда»)

Построим АЧХ фильтров. В случае цифрового фильтра wn задается в нормированном виде по отношению к частоте Найквиста:

[b,a]=cheby1(6,0.06,4/14); % определение параметров фильтра

% Чебышева первого рода

[b1,a1]=cheby2(9,35,4/14); % определение параметров фильтра

% Чебышева второго рода

Fs=100; % частота диcкретизации

[H,w] = freqz(b,a,512); % определение АЧХ фильтра

[H1,w] = freqz(b1,a1,512); % определение АЧХ фильтра

plot(w*Fs/(2*pi),abs(H), w*Fs/(2*pi),abs(H1)), grid; % вывод графика АЧХ

xlabel('Частота (Гц)'); % подпись оси Х («Частота»)

ylabel('Амплитуда'); % подпись оси Y («Амплитуда»)

legend({'АЧХ фильтра Чебышева 1 рода','АЧХ фильтра Чебышева 2 рода'});

Программа для определения спектральных плотностей составляющих сигнала:

sf=filter(b,a,s); %фильтрация сигнала

S = fft(s,512); %БПФ сложного сигнала

SF = fft(sf,512); %БПФ отфильтрованного сигнала

w = (0:255)/256*(Fs/2); % разбиение частотной оси на 256 значений

plot(w,abs([S(1:256)' SF(1:256)'])); grid; % построение графика АЧХ

xlabel('Frequency (Hz)'); % подпись оси Х («Частота, Гц»)

ylabel('Mag. of Fourier transform'); % подпись оси Y («Значение преобразования Фурье»)

legend({'input signal','filtered signal'});% подпись графиков («Входной сигнал, Фильтрованный сигнал»)

Программа фильтрации сигнала:

[b,a]=cheby1(6,0.06,4/14); %определение параметров фильтра

% Чебышева первого рода

[b1,a1]=cheby2(9,35,4/14); % определение параметров фильтра

% Чебышева второго рода

sf=filter(b,a,s); %фильтрация сигнала фильтром №1

sf1=filter(b1,a1,s); %фильтрация сигнала фильтром №2

plot (t,x,t,sf), grid; %построение графика отфильтрованных

% и требуемого сигналов

legend ('Исходный сигнал','Сигнал после фильтра Чебышева 1 рода',

'Сигнал после фильтра Чебышева 2 рода ',4); % подпись графиков сигналов

ВЫВОДЫ

Аппроксимация сигнала производилась полиномами Чебышева первого (пульсации в полосе пропускания) и второго (пульсации в полосе задерживания) рода, первый из которых имел неравномерность АЧХ в полосе пропускания. Фильтр Чебышева второго рода обладал меньшей шириной полосы, нежели фильтр первого рода и имел неравномерность АЧХ в полосе задерживания, но при этом обеспечивал большую крутизну затухания. Следовательно, фильтр Чебышева 1 рода необходимо использовать, когда требуется большая скорость затухания вне полосы пропускания и не предъявляются требования по обеспечению минимальных искажений АЧХ в полосе пропускания. Фильтр второго рода следует применять при повышенных требованиях к искажению при фильтрации.

На основе рассчитанных коэффициентов b,a построена спектральная плотность сложного входного и выходного фильтрованного сигнала. На графике отчетливо заметно, что после прохождения через фильтр синусоидальная и шумовая составляющая подавлены. Задержка выходного сигнала объясняется началом фильтрации только после накопления предшествующих n+1 значений, где n-порядок фильтра.

ЗАДАНИЕ

Соседние файлы в папке цос