Материал: Курсовая Оифс

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Расчет значений отклонения в полосе пропускания p и отклонение в полосе подавления s по формулам (2.3) занесён в таблицу 2.2.

, (2.3)

Таблица 2.2– Значения отклонений в полосе пропускания и подавления

0,07151

0,003162

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

3 Разработка алгоритма обнаружения сигнала

Критерием обнаружения полезного сигнала будет одновременное наличие во всех интервалах спектральных составляющих, удовлетворяющих заданному соотношению:

, (3.1)

где: нижний порог; верхний порог; значение гармоники с номером i.

Значения и рассчитываются на основании значений таблицы 2.3:

(3.2)

где количество значений частот в таблице 2.3.

Таблица 3.1 –Пороговые значения для поиска

№

Центральная частота, Гц

Интервал поиска, Гц

Пороговое значение

Пороговое значение

f1

2658

2558-2758

0,0011385

0,0013915

f2

4772

4672-4872

0,0019953

0,0024387

Начало

На рисунке 3.1 представлен алгоритм обнаружения полезного сигнала на основе анализа амплитудного спектра.

Фильтрация сигнала

Расчёт спектра с помощью дискретного преобразования Фурье

Поиск максимумов в интервалах

Полезный сигнал обнаружен

Полезный сигнал не обнаружен

Да

Нет

Загрузка данных

Конец

Рисунок 3.1 – Алгоритм обнаружения полезного сигнала

Текст программы для обнаружения полезного сигнала в среде Matlab.

Y1l=0.0011385;

Y1h=0.0013915;

Y2l=0.0019953;

Y2h=0.0024387;

data = load('fx165.mat');

k = load('b_filt.mat');

fd=44100;

s_in = data.fx;

s_out =filter(k.b_filt,1,s_in);

N = length(s_in);

dt=1/fd;

T=dt*(N-1);

Y = fft(s_out);

Y = 2 * abs(Y(1:N/2)) / N;

fl1=round(2558*T);

fh1=round(2758*T);

fl2=round(4672*T);

fh2=round(4872*T);

Ym1=max(Y(round(2558*T):round(2758*T)));

Ym2=max(Y(round(4672*T):round(4872*T)));

if Y1l<Ym1 && Ym1<Y1h && Y2l<Ym2 && Ym2<Y2h

res = 1;

else

res=0;

end

Программа обнаружения сигнала тестируется на выборке фрагментов неизвестных сигналов. Результат проверки по всем фрагментам записан в таблице 3.2.

Таблица 3.2 – Сводная таблица результатов тестирования алгоритма

Название фрагмента

Значения гармоник на интервале

Решение

f1

f2

Fx165

0.0017

1.0576e-05

0

Fx196

0.0347

3.9334e-04

0

Fx236

3.4981e-04

3.5173e-04

0

Fx385

8.6548e-04

2.8178e-05

0

Fx402

0.0012

5.7420e-04

0

Fx422

2.9091e-04

2.6666e-04

0

Fx757

0.0036

6.7661e-04

0

Fx804

2.5749e-05

1.6421e-05

0

Fx808

0.0022

4.9610e-05

0

Fx823

2.2431e-05

1.0428e-05

0

Fx1198

3.1755e-06

2.5006e-06

0

Fx1216

0.0013

0.0022

1

Fx1292

5.7560e-06

4.6923e-06

0

Fx1489

3.5012e-05

3.8655e-04

0

Fx1697

0.0358

8.9879e-04

0

Fx1749

3.1434e-04

3.3142e-04

0

Fx1836

0.0096

8.8891e-04

0

Fx1889

2.7640e-04

7.9296e-04

0

Fx2420

0.0075

2.9180e-04

0

Fx2588

0.0135

3.5809e-05

0

Fx3351

0.0204

2.1202e-04

0

Источник: https://studfile.net/preview/16683111/