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

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

        Алгоритм обнаружения сигнала основан на сравнении амплитуд спектральных составляющих отфильтрованного сигнала с пороговыми значениями (метод частотной выборки). Коэффициенты фильтра используются из п. 2.3. Пороговые значения задаются на основании результатов, полученных в п.2.3 (таблица 2.3). Для разработки алгоритма необходимо заполнить таблицу 3.1, где для каждой гармоники полезного сигнала указать значение порога и интервал поиска. Критерием обнаружения полезного сигнала будет одновременное наличие во всех интервалах спектральных составляющих, удовлетворяющих следующему соотношению:      ,    (3.1)     где:   - нижний порог,   - верхний порог,    - значение амплитуды гармоники с номером .

    Значения   и   рассчитываются на основании значений таблицы 2.3:      ,     ,    (3.2)     где   - количество значений частот в таблице 2.3.

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

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

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

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

1568

{1500:2000}

0,039

2105

{2000:2500}

0,045

   На рисунке 3.1 необходимо изобразить алгоритм обнаружения полезного сигнала на основе анализа амплитудного спектра. Алгоритм должен содержать все этапы обработки сигнала: считывание, фильтрацию, поиск максимумов в интервалах, принятие решения.

Начало

Конец файлов?

Конец

да

нет

Считывание

Фильтрация

Поиск max

Принятие решения

Отметить +

да

нет

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

Для оценки работоспособности алгоритма следует составить программу.

clc;

clear;

%шаг 1.1 Начало считывания

data=load('fx.mat'); % считывание исходного сигнала из файла

fx=data.fx;

fd=data.fd;

%шаг 1.2

data=load('b_filt.mat');

b_filt=data.b_filt;

% Конец считывания

%шаг 2 Начало фильтрации

fy=filter(b_filt,1,fx); фильтрует сигнал, заданный в виде одномерного массива, используя дискретный фильтр

%шаг 3.1

N=length(fy); %количество отсчетов отфильтрованного сигнала

T=1/fd*N; %длительность сигнала,с

Y=fft(fy); %Преобразование Фурье

Y=2*abs(Y(1:N/2))/N; %Модуль|Y|

f=1/T*(0:N/2-1);%Ось частот

df=fd/N; % шаг по оси частот

%интервал поиска

fs=[1400 1700; 1900 2300; 3200 3600]; интервал поиска

[m n]=size(fs); %m количество строк n количество столбцов

Yf=zeros(1,m);%формирует массив нулей размера 1×m

for i=1:m

fs(i,1)=int32(fs(i,1)/df); %преобразовать в 32-разрядное целое число

fs(i,2)=int32(fs(i,2)/df); %преобразовать в 32-разрядное целое число

[value index]=max(Y(fs(i,1):fs(i,2)));

index=index+fs(i,1)-1; %корректировка индекса смещения

Yf(i)=value; %сохранение найденных амплитуд гармоник

end

% Конец фильтрации

%шаг 4 Начало принятия решения

Yeth=[0.0365 0.0250 0.0387];

find=0;

for i=1:m

yeth=Yeth(i)-Yeth(i)*0.1

if(Yf(i)>yeth)find=find+1;end;

end;

% Конец принятия решения

% шаг 5 Отображение результата поиска

if(find==m)

disp(['+']);

else

disp(['-']);

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

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

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

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

fx165

0.0001

0.0024

0.0004

-

fx196

0.0356

0.0417

0.0245

-

fx236

0.0001

0.00001

0.0245

-

fx385

0.0017

0.0025

0.0245

-

fx402

0.0007

0.0007

0.0245

-

fx422

0.0015

0.0001

0.0245

-

fx757

0.0047

0.0068

0.0245

-

fx804

0.0047

0.00002

0.00002

-

fx808

0.0034

0.0024

0.00002

-

fx823

0.00004

0.00001

0.00001

-

fx1198

0.000005

0.000004

0.00001

-

fx1216

0.00002

0.0007

0.00001

-

fx1292

0.00001

0.00001

0.00001

-

fx1489

0.00001

0.0001

0.00001

-

fx1697

0.0365

0.0250

0.00001

+

fx1749

0.0004

0.0012

0.00001

-

fx1836

0.0091

0.0150

0.00001

-

fx1889

0.0002

0.00008

0.00001

-

fx2420

0.0103

0.0123

0.00001

-

fx2588

0.0304

0.0126

0.00001

-

fx3351

0.0311

0.0228

0.00001

-

Вывод: В данном пункте был построен алгоритм обнаружения полезного сигнала на основе анализа амплитудного спектра. По алгоритму была составлена программа в Mathlab и протестирована на выборке фрагментов неизвестных сигналов. Был обнаружен полезный сигнал fx1697.

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