Добавил:
Студент, если у тебя есть завалявшиеся работы, то не стесняйся, загрузи их на СтудентФайлс! Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работы / Kursach_OiFS.docx
Скачиваний:
10
Добавлен:
05.08.2022
Размер:
617.21 Кб
Скачать

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

Соседние файлы в папке Работы