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

2.3 Реализация фильтра в среде Matlab

Основными функциями для осуществления одномерной линейной дискретной фильтрации в Matlab являются функции filter, filtfilt, fftfilt.

Синтаксис функций фильтрации:

s_out = filter(b_filt, 1, s_in);

s_out = filtfilt(b_filt, 1, s_in);

s_out = fftfilt(b_filt, s_in);

где: b_filt – коэффициенты фильтра; s_in – отсчеты входного сигнала; s_out - результат фильтрации..

По спектру отфильтрованного сигнала определить значения максимумов. Занести значения в таблицу 2.3.

Рисунок 2.5 – Результат фильтрации

Программа Matlab для фильтрации сигнала

% Фильтрация сигнала в среде Matlab:

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

s_in = data.X;

fd = data.Fd;

dt =1/fd;

N = length(s_in);

time=0:dt:dt*(N-1);

k = load('b_filt.mat'); % весовые коэффициенты фильтра хранятся в векторе b_filt

%s_out = функция фильтрации; % фильтрация исходного сигнала

k=k.b_filt;

s_out = filtfilt(k,1, s_in);

subplot(2, 1, 1),plot(time, s_in),grid on;

hold on

plot(time, s_out,'color','r')

xlabel('Время,с')

ylabel('Амплитуда,B')

title('Зависимость амплитуда-время');

legend('Исходный сигнал','фильтрованный');

% Фильтрация сигнала в среде Matlab:

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

s_in = data.X;

fd = data.Fd;

dt =1/fd;

T = data.t;

N = length(s_in);

time=0:dt:dt*(N-1);

%T2 = data.T(length(data.T));

f= 1/T * (0:N/2-1);

k = load('b_filt.mat'); % весовые коэффициенты фильтра хранятся в векторе b_filt

k=k.b_filt;

s_out = filtfilt(k,1, s_in); % фильтрация исходного сигнала

Y=fft(s_out);

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

subplot(2, 1, 2),plot(f, Y),grid on;

xlim([0 9000]);

xlabel('Частота (кГц)');

ylabel('|Y(f)|');

title('Спектр фильтрованного сигнала');

Таблица 2.3 – Таблица гармоник отфильтрованного сигнала

Значение, Гц

Амплитуда |Y|

1568

0.001309

2104

0.002488

2734

0.002338

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

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

,    (3.1)

где:   - нижний порог,   - верхний порог,    - значение амплитуды гармоники с номером . Значения    и     рассчитываются на основании значений таблицы 2.3:

    ,      ,      ,    (3.2)

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

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

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

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

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

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

1568

1398-1738

0.0011781

0.0014399

2104

1934-2274

0.0022392

0.0027368

2734

2564-2904

0.0021042

0.0025718

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

Считать данные из файла массива (fx)

Начало

Загрузить коэффициент фильтра из файла (b_filt.mat)

Выполнить фильтрацию сигнала (fx) на основании коэффициентов b_filt. Сохранить результат в переменной fx_filt

Выполнить прямое преобразование Фурье над сигналом fx_filt. Сохранить полученный спектр в переменной fft_filt

Нет

i<n

Max=Y(i)

X=i

Да

Да

Да

Y>max

Нет

i=i+1

Выполнить сравнение частот спектра fft_filt c заданным набором из табл. 3.1

(частота и амплитуда)

Нет

Да

X=f

Да

Нет

Не полезный

Полезный

Конец Конец

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

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

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

s_in = data.fx;

fd = data.fd;

dt =1/fd;

N = length(s_in);

time=0:dt:dt*(N-1);

T = dt*(N-1)

f = 1/T * (0:N/2-1);

k = load('b_filt.mat'); % весовые коэффициенты фильтра хранятся в векторе b_filt

k=k.b_filt;

s_out = filtfilt(k,1, s_in); % фильтрация исходного сигнала

Y=fft(s_out);

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

Ymax1=max(Y(fls1*T:fhs1*T));

Ymax2=max(Y(fls2*T:fhs2*T));

Ymax3=max(Y(fls3*T:fhs3*T));

if Ymax1<yh1 && Ymax1>yl1 && Ymax2<yh2 && Ymax2>yl2 && Ymax3<yh3 && Ymax3>yl3

c=('полезный')

else

c=('не полезный')

end

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

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

Решение

f1

f2

f3

165

0.001072

0.002038

0.001915

+

196

0.02911

0.03402

0.03893

-

236

0.000153

3.112e-005

0.0004241

-

385

0.001729

0.002455

0.001514

-

402

0.0007853

0.0003159

0.000168

-

422

0.001874

9.539e-005

0.0003206

-

757

0.00368

0.006799

0.003914

-

804

3.196e-005

2.418e-005

2.157e-005

-

808

0.002814

0.002422

0.002431

-

823

4.333e-005

2.22e-005

2.371e-005

-

1198

7.063e-006

4.425e-006

3.611e-006

-

1216

3.438e-005

0.0008435

0.001036

-

1292

1.496e-005

1.252e-005

5.237e-006

-

1489

1.1498e-005

0.0001619

3.833e-005

-

1697

0.02888

0.02535

0.03849

-

1749

0.0003263

0.001277

0.0003405

-

1836

0.007239

0.01501

0.01041

-

1889

0.0004684

3.892e-005

0.0006868

-

2420

0.008507

0.01006

0.008588

-

2588

0.02505

0.01047

0.01538

-

3351

0.02514

0.02002

0.0235

-

Соседние файлы в папке Еще еще курсач Давыдкин
  • #
    22.08.202214.98 Кб712.09.2016.xlsx
  • #
    22.08.2022125.95 Кб712.10.2016.xls
  • #
    22.08.202215.93 Кб72.ewb
  • #
    22.08.202217.15 Кб73.ewb
  • #
    22.08.2022526 б7AScan.txt
  • #
    22.08.2022312.96 Кб12Cerf.docx
  • #
    22.08.202262.46 Кб7Echo1.txt
  • #
    22.08.20221.32 Кб7F1.m
  • #
    22.08.20228 б7GoodJobMan.m
  • #
    22.08.2022478 б7graph.m
  • #
    22.08.2022439 б7keeeeeeker.m